Commit dd753d96 authored by Hsin-Yi Wang's avatar Hsin-Yi Wang Committed by Will Deacon

fdt: Update CRC check for rng-seed

Commit 428826f5 ("fdt: add support for rng-seed") moves of_fdt_crc32
from early_init_dt_verify() to early_init_dt_scan() since
early_init_dt_scan_chosen() may modify fdt to erase rng-seed.

However, arm and some other arch won't call early_init_dt_scan(), they
call early_init_dt_verify() then early_init_dt_scan_nodes().

Restore of_fdt_crc32 to early_init_dt_verify() then update it in
early_init_dt_scan_chosen() if fdt if updated.

Fixes: 428826f5 ("fdt: add support for rng-seed")
Reported-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: default avatarHsin-Yi Wang <hsinyi@chromium.org>
Tested-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent 7f591fa7
...@@ -1086,6 +1086,10 @@ int __init early_init_dt_scan_chosen(unsigned long node, const char *uname, ...@@ -1086,6 +1086,10 @@ int __init early_init_dt_scan_chosen(unsigned long node, const char *uname,
/* try to clear seed so it won't be found. */ /* try to clear seed so it won't be found. */
fdt_nop_property(initial_boot_params, node, "rng-seed"); fdt_nop_property(initial_boot_params, node, "rng-seed");
/* update CRC check value */
of_fdt_crc32 = crc32_be(~0, initial_boot_params,
fdt_totalsize(initial_boot_params));
} }
/* break now */ /* break now */
...@@ -1176,6 +1180,8 @@ bool __init early_init_dt_verify(void *params) ...@@ -1176,6 +1180,8 @@ bool __init early_init_dt_verify(void *params)
/* Setup flat device-tree pointer */ /* Setup flat device-tree pointer */
initial_boot_params = params; initial_boot_params = params;
of_fdt_crc32 = crc32_be(~0, initial_boot_params,
fdt_totalsize(initial_boot_params));
return true; return true;
} }
...@@ -1205,8 +1211,6 @@ bool __init early_init_dt_scan(void *params) ...@@ -1205,8 +1211,6 @@ bool __init early_init_dt_scan(void *params)
return false; return false;
early_init_dt_scan_nodes(); early_init_dt_scan_nodes();
of_fdt_crc32 = crc32_be(~0, initial_boot_params,
fdt_totalsize(initial_boot_params));
return true; return true;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment