ASoC: davinci - Fix possible NULL derefrence.
authorShailendra Verma <shailendra.v@samsung.com>
Fri, 27 Jan 2017 11:10:57 +0000 (16:40 +0530)
committerMark Brown <broonie@kernel.org>
Fri, 27 Jan 2017 11:58:54 +0000 (11:58 +0000)
of_match_device could return NULL, and so can cause a NULL
pointer dereference later.

Signed-off-by: Shailendra Verma <shailendra.v@samsung.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/davinci/davinci-evm.c

index 731fb0d86c6ab305a499baaa306112353b02782e..7a369e0f2093beb18e740b18f17cc3893da299c0 100644 (file)
@@ -358,13 +358,20 @@ static struct snd_soc_card evm_soc_card = {
 static int davinci_evm_probe(struct platform_device *pdev)
 {
        struct device_node *np = pdev->dev.of_node;
-       const struct of_device_id *match =
-               of_match_device(of_match_ptr(davinci_evm_dt_ids), &pdev->dev);
-       struct snd_soc_dai_link *dai = (struct snd_soc_dai_link *) match->data;
+       const struct of_device_id *match;
+       struct snd_soc_dai_link *dai;
        struct snd_soc_card_drvdata_davinci *drvdata = NULL;
        struct clk *mclk;
        int ret = 0;
 
+       match = of_match_device(of_match_ptr(davinci_evm_dt_ids), &pdev->dev);
+       if (!match) {
+               dev_err(&pdev->dev, "Error: No device match found\n");
+               return -ENODEV;
+       }
+
+       dai = (struct snd_soc_dai_link *) match->data;
+
        evm_soc_card.dai_link = dai;
 
        dai->codec_of_node = of_parse_phandle(np, "ti,audio-codec", 0);