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
This commit is contained in:
Luiz Otavio O Souza 2025-04-26 12:23:27 -03:00 committed by Kristof Provost
parent 720fabb36f
commit 4e3a6fe013

View file

@ -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 *)&reg;
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);