Skip to content

Commit de7323f

Browse files
zijun-hurobherring
authored andcommitted
of/fdt: Check fdt_get_mem_rsv() error in early_init_fdt_scan_reserved_mem()
early_init_fdt_scan_reserved_mem() invoks fdt_get_mem_rsv(), and it will use uninitialized variables @base and @SiZe once the callee suffers error. Fix by checking fdt_get_mem_rsv() error as other callers do. Signed-off-by: Zijun Hu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Rob Herring (Arm) <[email protected]>
1 parent ab7eeb7 commit de7323f

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

drivers/of/fdt.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,7 @@ static void __init fdt_reserve_elfcorehdr(void)
497497
void __init early_init_fdt_scan_reserved_mem(void)
498498
{
499499
int n;
500+
int res;
500501
u64 base, size;
501502

502503
if (!initial_boot_params)
@@ -507,7 +508,11 @@ void __init early_init_fdt_scan_reserved_mem(void)
507508

508509
/* Process header /memreserve/ fields */
509510
for (n = 0; ; n++) {
510-
fdt_get_mem_rsv(initial_boot_params, n, &base, &size);
511+
res = fdt_get_mem_rsv(initial_boot_params, n, &base, &size);
512+
if (res) {
513+
pr_err("Invalid memory reservation block index %d\n", n);
514+
break;
515+
}
511516
if (!size)
512517
break;
513518
memblock_reserve(base, size);

0 commit comments

Comments
 (0)