diff options
Diffstat (limited to 'target/linux/layerscape/patches-4.4/1080-mtd-fsl-quadspi-possible-NULL-dereference.patch')
-rw-r--r-- | target/linux/layerscape/patches-4.4/1080-mtd-fsl-quadspi-possible-NULL-dereference.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-4.4/1080-mtd-fsl-quadspi-possible-NULL-dereference.patch b/target/linux/layerscape/patches-4.4/1080-mtd-fsl-quadspi-possible-NULL-dereference.patch new file mode 100644 index 0000000000..76898ab58d --- /dev/null +++ b/target/linux/layerscape/patches-4.4/1080-mtd-fsl-quadspi-possible-NULL-dereference.patch @@ -0,0 +1,50 @@ +From bd02decd1ad7cc883ce388e769a34a3c402b90c4 Mon Sep 17 00:00:00 2001 +From: Brian Norris <computersforpeace@gmail.com> +Date: Mon, 16 Nov 2015 10:45:30 -0800 +Subject: [PATCH 080/113] mtd: fsl-quadspi: possible NULL dereference + +It is theoretically possible to probe this driver without a matching +device tree, so let's guard against this. + +Also, use the of_device_get_match_data() helper to make this a bit +simpler. + +Coverity complained about this one. + +Signed-off-by: Brian Norris <computersforpeace@gmail.com> +Acked-by: Han xu <han.xu@freescale.com> +--- + drivers/mtd/spi-nor/fsl-quadspi.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/mtd/spi-nor/fsl-quadspi.c ++++ b/drivers/mtd/spi-nor/fsl-quadspi.c +@@ -269,7 +269,7 @@ struct fsl_qspi { + struct clk *clk, *clk_en; + struct device *dev; + struct completion c; +- struct fsl_qspi_devtype_data *devtype_data; ++ const struct fsl_qspi_devtype_data *devtype_data; + u32 nor_size; + u32 nor_num; + u32 clk_rate; +@@ -933,8 +933,6 @@ static int fsl_qspi_probe(struct platfor + struct spi_nor *nor; + struct mtd_info *mtd; + int ret, i = 0; +- const struct of_device_id *of_id = +- of_match_device(fsl_qspi_dt_ids, &pdev->dev); + + q = devm_kzalloc(dev, sizeof(*q), GFP_KERNEL); + if (!q) +@@ -945,7 +943,9 @@ static int fsl_qspi_probe(struct platfor + return -ENODEV; + + q->dev = dev; +- q->devtype_data = (struct fsl_qspi_devtype_data *)of_id->data; ++ q->devtype_data = of_device_get_match_data(dev); ++ if (!q->devtype_data) ++ return -ENODEV; + platform_set_drvdata(pdev, q); + + /* find the resources */ |