[PATCH] mtd: nand: Do not dereference before NULL check

Andrew Goodbody andrew.goodbody at linaro.org
Thu Jul 31 18:21:32 CEST 2025


In nanddev_init mtd and memorg are assigned values that dereference nand
but this happens before a NULL check for nand. Move the assignments
after the NULL check.

This issue was found by Smatch.

Signed-off-by: Andrew Goodbody <andrew.goodbody at linaro.org>
---
 drivers/mtd/nand/core.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/nand/core.c b/drivers/mtd/nand/core.c
index 472ad0bdefb..01ff6e3befa 100644
--- a/drivers/mtd/nand/core.c
+++ b/drivers/mtd/nand/core.c
@@ -201,8 +201,8 @@ EXPORT_SYMBOL_GPL(nanddev_mtd_erase);
 int nanddev_init(struct nand_device *nand, const struct nand_ops *ops,
 		 struct module *owner)
 {
-	struct mtd_info *mtd = nanddev_to_mtd(nand);
-	struct nand_memory_organization *memorg = nanddev_get_memorg(nand);
+	struct mtd_info *mtd;
+	struct nand_memory_organization *memorg;
 
 	if (!nand || !ops)
 		return -EINVAL;
@@ -210,6 +210,9 @@ int nanddev_init(struct nand_device *nand, const struct nand_ops *ops,
 	if (!ops->erase || !ops->markbad || !ops->isbad)
 		return -EINVAL;
 
+	mtd = nanddev_to_mtd(nand);
+	memorg = nanddev_get_memorg(nand);
+
 	if (!memorg->bits_per_cell || !memorg->pagesize ||
 	    !memorg->pages_per_eraseblock || !memorg->eraseblocks_per_lun ||
 	    !memorg->planes_per_lun || !memorg->luns_per_target ||

---
base-commit: 79f3e77133bd7248e4579827effc13f97a32a8a8
change-id: 20250731-nand_core-399525609ec5

Best regards,
-- 
Andrew Goodbody <andrew.goodbody at linaro.org>



More information about the U-Boot mailing list