Skip to contentSkip to conversation

drivers: soc: sunxi: Fix possible null pointer dereference

PATCH In review Chenyuan Yang 2 participants 2 messages Apr 12, 2025 – Apr 24, 2025 Arm/Allwinner sunXi SoC support

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 drivers: soc: sunxi: Fix possible null pointer dereference

of_get_address() may return NULL which is later dereferenced. Fix this bug by adding NULL check

This is similar to the commit c534b63bede6 ("drm: vc4: Fix possible null pointer dereference").

Fixes 4af34b572a85 ("drivers: soc: sunxi: Introduce SoC driver to map SRAMs")
---
 drivers/soc/sunxi/sunxi_sram.c | 4 ++++
 1 file changed, 4 insertions(+)
drivers/soc/sunxi/sunxi_sram.c +4 -0
index 2781a091a6a6..1853dcc806ea 100644
@@ -122,6 +122,8 @@ static int sunxi_sram_show(struct seq_file *s, void *data)
 			continue;
 
 		sram_addr_p = of_get_address(sram_node, 0, NULL, NULL);
+		if (!sram_addr_p)
+			continue;
 
 		seq_printf(s, "sram@%08x\n",
 			   be32_to_cpu(*sram_addr_p));
@@ -134,6 +136,8 @@ static int sunxi_sram_show(struct seq_file *s, void *data)
 
 			section_addr_p = of_get_address(section_node, 0,
 							NULL, NULL);
+			if (!section_addr_p)
+				continue;
 
 			seq_printf(s, "\tsection@%04x\t(%s)\n",
 				   be32_to_cpu(*section_addr_p),
Signature · 1 line
2.34.1
#1 lore raw
Quoted 8 lines · On Sat, 12 Apr 2025 11:57:00 -0500 Chenyuan Yang <[email protected]> wrote:

of_get_address() may return NULL which is later dereferenced. Fix this bug by adding NULL check

This is similar to the commit c534b63bede6 ("drm: vc4: Fix possible null pointer dereference").

Fixes 4af34b572a85 ("drivers: soc: sunxi: Introduce SoC driver to map SRAMs")

That fix looks alright, indeed of_get_address() returns NULL if the slightest bit in the property is not as expected, and we should check for that.

I am just wondering if we should issue a firmware warning in this case, instead of just silently skipping an entry.

Cheers,
Andre

Quoted 26 lines
---
 drivers/soc/sunxi/sunxi_sram.c | 4 ++++
 1 file changed, 4 insertions(+)
drivers/soc/sunxi/sunxi_sram.c +4 -0
index 2781a091a6a6..1853dcc806ea 100644
@@ -122,6 +122,8 @@ static int sunxi_sram_show(struct seq_file *s, void *data)
 			continue;
 
 		sram_addr_p = of_get_address(sram_node, 0, NULL, NULL);
+		if (!sram_addr_p)
+			continue;
 
 		seq_printf(s, "sram@%08x\n",
 			   be32_to_cpu(*sram_addr_p));
@@ -134,6 +136,8 @@ static int sunxi_sram_show(struct seq_file *s, void *data)
 
 			section_addr_p = of_get_address(section_node, 0,
 							NULL, NULL);
+			if (!section_addr_p)
+				continue;
 
 			seq_printf(s, "\tsection@%04x\t(%s)\n",
 				   be32_to_cpu(*section_addr_p),