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 <[email protected]>
Cc: Han Xu <[email protected]>
---
drivers/mtd/spi-nor/fsl-quadspi.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c
index cc3a70b9b020..68fe7a2ecd5c 100644
--- a/drivers/mtd/spi-nor/fsl-quadspi.c
+++ b/drivers/mtd/spi-nor/fsl-quadspi.c
@@ -933,8 +933,6 @@ static int fsl_qspi_probe(struct platform_device *pdev)
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 platform_device *pdev)
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 */
--
2.6.0.rc2.230.g3dd15c0
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 <[email protected]>
Cc: Han Xu <[email protected]>
---
v2:
* missed a 'const' warning
* s/reference/dereference in $subject
drivers/mtd/spi-nor/fsl-quadspi.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c
index cc3a70b9b020..916d6dd5b575 100644
--- 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 platform_device *pdev)
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 platform_device *pdev)
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 */
--
2.6.0.rc2.230.g3dd15c0
Hi Brian,
[auto build test WARNING on mtd/master]
[also build test WARNING on v4.4-rc1 next-20151116]
url: https://github.com/0day-ci/linux/commits/Brian-Norris/mtd-fsl-quadspi-possible-NULL-reference/20151117-024430
base: git://git.infradead.org/linux-mtd.git master
config: i386-allmodconfig (attached as .config)
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All warnings (new ones prefixed by >>):
drivers/mtd/spi-nor/fsl-quadspi.c: In function 'fsl_qspi_probe':
>> drivers/mtd/spi-nor/fsl-quadspi.c:947:18: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
q->devtype_data = of_device_get_match_data(dev);
^
vim +/const +947 drivers/mtd/spi-nor/fsl-quadspi.c
931 struct device *dev = &pdev->dev;
932 struct fsl_qspi *q;
933 struct resource *res;
934 struct spi_nor *nor;
935 struct mtd_info *mtd;
936 int ret, i = 0;
937
938 q = devm_kzalloc(dev, sizeof(*q), GFP_KERNEL);
939 if (!q)
940 return -ENOMEM;
941
942 q->nor_num = of_get_child_count(dev->of_node);
943 if (!q->nor_num || q->nor_num > FSL_QSPI_MAX_CHIP)
944 return -ENODEV;
945
946 q->dev = dev;
> 947 q->devtype_data = of_device_get_match_data(dev);
948 if (!q->devtype_data)
949 return -ENODEV;
950 platform_set_drvdata(pdev, q);
951
952 /* find the resources */
953 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "QuadSPI");
954 q->iobase = devm_ioremap_resource(dev, res);
955 if (IS_ERR(q->iobase))
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
On Mon, Nov 16, 2015 at 10:45:30AM -0800, Brian Norris wrote:
> 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 <[email protected]>
> Cc: Han Xu <[email protected]>
> ---
> v2:
> * missed a 'const' warning
> * s/reference/dereference in $subject
>
> drivers/mtd/spi-nor/fsl-quadspi.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c
> index cc3a70b9b020..916d6dd5b575 100644
> --- 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 platform_device *pdev)
> 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 platform_device *pdev)
> 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 */
> --
> 2.6.0.rc2.230.g3dd15c0
>
Acked-by: Han xu <[email protected]>
--
Best Regards,
Han "Allen" Xu
On Mon, Nov 16, 2015 at 10:45:30AM -0800, Brian Norris wrote:
> 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 <[email protected]>
> Cc: Han Xu <[email protected]>
> ---
> v2:
> * missed a 'const' warning
> * s/reference/dereference in $subject
Pushed to l2-mtd.git