From 4e3a6fe0134e67fdcd1279b06427e5f26dd08f78 Mon Sep 17 00:00:00 2001 From: Luiz Otavio O Souza Date: Sat, 26 Apr 2025 12:23:27 -0300 Subject: [PATCH] Make sure the memory region definitions are zeroed before use. Since only 32bits of the values are read from the fdt, the existing values can compromise the results. Fixes the boot on the Netgate 3100. Reviewed by: andrew, mmel Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D50083 --- sys/dev/fdt/fdt_common.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/dev/fdt/fdt_common.c b/sys/dev/fdt/fdt_common.c index 53d47c26b53..1fea4c6f139 100644 --- a/sys/dev/fdt/fdt_common.c +++ b/sys/dev/fdt/fdt_common.c @@ -441,6 +441,7 @@ fdt_foreach_reserved_region(fdt_mem_region_cb cb, void *arg) reservep = (pcell_t *)&reserve; for (i = 0; i < tuples; i++) { + memset(&mr, 0, sizeof(mr)); rv = fdt_data_to_res(reservep, addr_cells, size_cells, (u_long *)&mr.mr_start, (u_long *)&mr.mr_size); @@ -484,6 +485,7 @@ fdt_foreach_reserved_mem(fdt_mem_region_cb cb, void *arg) /* XXX: Does a no-map of a dynamic range make sense? */ continue; + memset(&mr, 0, sizeof(mr)); fdt_data_to_res(reg, addr_cells, size_cells, (u_long *)&mr.mr_start, (u_long *)&mr.mr_size); @@ -526,6 +528,7 @@ fdt_foreach_mem_region(fdt_mem_region_cb cb, void *arg) regp = (pcell_t *)® for (i = 0; i < tuples; i++) { + memset(&mr, 0, sizeof(mr)); rv = fdt_data_to_res(regp, addr_cells, size_cells, (u_long *)&mr.mr_start, (u_long *)&mr.mr_size);