[PATCH v2] dm: core: Don't allow ofnode_to_fdt() to return NULL

Romain Gantois romain.gantois at bootlin.com
Tue Feb 17 10:27:52 CET 2026


The ofnode_to_fdt() function may return a NULL pointer in multiple cases.
Or, this function's return value is often passed directly to functions such
as fdt_getprop() which end up dereferencing it, thus causing a NULL pointer
exception.

Don't allow ofnode_to_fdt() to return NULL, to avoid a NULL pointer
dereference.

Reviewed-by: Raphaël Gallais-Pou <raphael.gallais-pou at foss.st.com>
Signed-off-by: Romain Gantois <romain.gantois at bootlin.com>
---
Changes in v2:
- Added back a dropped cast from cont void* to void*
- Link to v1: https://lore.kernel.org/r/20260210-ofnode-to-fdt-null-v1-1-4bed28680f35@bootlin.com
---
 drivers/core/ofnode.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index cf1cf8abfbe..3a36b6fdd03 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -164,15 +164,20 @@ void *ofnode_lookup_fdt(ofnode node)
 
 void *ofnode_to_fdt(ofnode node)
 {
+	void *fdt;
+
 #ifdef OF_CHECKS
 	if (of_live_active())
-		return NULL;
+		panic("%s called with live tree in use!\n", __func__);
 #endif
 	if (CONFIG_IS_ENABLED(OFNODE_MULTI_TREE) && ofnode_valid(node))
-		return ofnode_lookup_fdt(node);
+		fdt = ofnode_lookup_fdt(node);
+	else
+		fdt = (void *)gd->fdt_blob;
+
+	assert(fdt);
 
-	/* Use the control FDT by default */
-	return (void *)gd->fdt_blob;
+	return fdt;
 }
 
 /**

---
base-commit: 8666b16015d4212facacc514e2eb626f3630dcf0
change-id: 20260210-ofnode-to-fdt-null-95a9f357819e

Best regards,
-- 
Romain Gantois <romain.gantois at bootlin.com>



More information about the U-Boot mailing list