spi: sh-sci: Prevent NULL pointer dereference
authorAxel Lin <axel.lin@ingics.com>
Thu, 13 Mar 2014 02:32:37 +0000 (10:32 +0800)
committerMark Brown <broonie@linaro.org>
Thu, 13 Mar 2014 13:40:51 +0000 (13:40 +0000)
If sp->info is NULL, we will hit NULL pointer dereference in probe() while
setting bus_num and num_chipselect for master:

        sp->bitbang.master->bus_num = sp->info->bus_num;
        sp->bitbang.master->num_chipselect = sp->info->num_chipselect;

Thus add NULL test for sp->info in probe() to prevent NULL pointer dereference.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/spi/spi-sh-sci.c

index 38eb24df796c58ebdef65d2c5ada2e90aff036d0..41b1346b29d542952d94af0b22fe1ffdfe74d1df 100644 (file)
@@ -109,7 +109,7 @@ static void sh_sci_spi_chipselect(struct spi_device *dev, int value)
 {
        struct sh_sci_spi *sp = spi_master_get_devdata(dev->master);
 
-       if (sp->info && sp->info->chip_select)
+       if (sp->info->chip_select)
                (sp->info->chip_select)(sp->info, dev->chip_select, value);
 }
 
@@ -131,6 +131,11 @@ static int sh_sci_spi_probe(struct platform_device *dev)
 
        platform_set_drvdata(dev, sp);
        sp->info = dev_get_platdata(&dev->dev);
+       if (!sp->info) {
+               dev_err(&dev->dev, "platform data is missing\n");
+               ret = -ENOENT;
+               goto err1;
+       }
 
        /* setup spi bitbang adaptor */
        sp->bitbang.master = master;