[PATCH v2] board: rzg2l: Check the DTB pointer passed by the TF-A.

Mathieu Othacehe othacehe at gnu.org
Mon Sep 22 18:29:00 CEST 2025


On the RZG2L platform, the advised
TF-A (https://github.com/renesas-rz/rzg_trusted-firmware-a/tree/v2.5/rzg2l)
does not pass any DTB blob to U-Boot.

On the other hand, the RZG2L part of U-Boot expects a DTB to be passed.  It
means that if one flashes the latest TF-A as well as the mainline U-Boot,
it will crash trying to dereference the NULL DTB pointer before outputing
anything.

Check if the DTB pointer is NULL before trying to use it.

Signed-off-by: Mathieu Othacehe <othacehe at gnu.org>
---
v1: https://lists.denx.de/pipermail/u-boot/2025-September/598712.html

Changelog:
v2: Keep compatibility with TF-A passing DTB blobs.

 arch/arm/mach-renesas/cpu_info-rzg2l.c | 2 +-
 board/renesas/rzg2l/rzg2l.c            | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-renesas/cpu_info-rzg2l.c b/arch/arm/mach-renesas/cpu_info-rzg2l.c
index ab95ce76388..a9cb9f72dd3 100644
--- a/arch/arm/mach-renesas/cpu_info-rzg2l.c
+++ b/arch/arm/mach-renesas/cpu_info-rzg2l.c
@@ -30,7 +30,7 @@ static const struct tfa_info *get_tfa_info(void)
 {
 	void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
 
-	if (fdt_magic(atf_fdt_blob) == FDT_MAGIC) {
+	if (atf_fdt_blob && fdt_magic(atf_fdt_blob) == FDT_MAGIC) {
 		unsigned int i;
 		for (i = 0; i < ARRAY_SIZE(tfa_info); i++) {
 			if (!fdt_node_check_compatible(atf_fdt_blob, 0,
diff --git a/board/renesas/rzg2l/rzg2l.c b/board/renesas/rzg2l/rzg2l.c
index 509c5dbb156..3c8f8d04cbd 100644
--- a/board/renesas/rzg2l/rzg2l.c
+++ b/board/renesas/rzg2l/rzg2l.c
@@ -22,7 +22,7 @@ int board_fit_config_name_match(const char *name)
 {
 	void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
 
-	if (fdt_magic(atf_fdt_blob) != FDT_MAGIC)
+	if (!atf_fdt_blob || fdt_magic(atf_fdt_blob) != FDT_MAGIC)
 		return -1;
 
 	if (is_rzg2l_board("renesas,r9a07g044l2"))
@@ -36,7 +36,7 @@ static void apply_atf_overlay(void *fdt_blob)
 {
 	void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]);
 
-	if (fdt_magic(atf_fdt_blob) == FDT_MAGIC)
+	if (atf_fdt_blob && fdt_magic(atf_fdt_blob) == FDT_MAGIC)
 		fdt_overlay_apply_node(fdt_blob, 0, atf_fdt_blob, 0);
 }
 
-- 
2.49.0



More information about the U-Boot mailing list