Browse Source

spi: sh-sci: Prevent NULL pointer dereference

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>
Axel Lin 11 years ago
parent
commit
ed8eb250d7
1 changed files with 6 additions and 1 deletions
  1. 6 1
      drivers/spi/spi-sh-sci.c

+ 6 - 1
drivers/spi/spi-sh-sci.c

@@ -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);
 	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);
 		(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);
 	platform_set_drvdata(dev, sp);
 	sp->info = dev_get_platdata(&dev->dev);
 	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 */
 	/* setup spi bitbang adaptor */
 	sp->bitbang.master = master;
 	sp->bitbang.master = master;