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 <quic_zijuhu@quicinc.com> Link: https://lore.kernel.org/r/20250109-of_core_fix-v4-13-db8a72415b8c@quicinc.com Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
This commit is contained in:
committed by
Rob Herring (Arm)
parent
ab7eeb7b43
commit
de7323f6fc
+6
-1
@@ -497,6 +497,7 @@ static void __init fdt_reserve_elfcorehdr(void)
|
||||
void __init early_init_fdt_scan_reserved_mem(void)
|
||||
{
|
||||
int n;
|
||||
int res;
|
||||
u64 base, size;
|
||||
|
||||
if (!initial_boot_params)
|
||||
@@ -507,7 +508,11 @@ void __init early_init_fdt_scan_reserved_mem(void)
|
||||
|
||||
/* Process header /memreserve/ fields */
|
||||
for (n = 0; ; n++) {
|
||||
fdt_get_mem_rsv(initial_boot_params, n, &base, &size);
|
||||
res = fdt_get_mem_rsv(initial_boot_params, n, &base, &size);
|
||||
if (res) {
|
||||
pr_err("Invalid memory reservation block index %d\n", n);
|
||||
break;
|
||||
}
|
||||
if (!size)
|
||||
break;
|
||||
memblock_reserve(base, size);
|
||||
|
||||
Reference in New Issue
Block a user