aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/patches-4.4/1080-mtd-fsl-quadspi-possible-NULL-dereference.patch
diff options
context:
space:
mode:
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.patch50
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 */