During early boot, dm_rng_read() may fail if the underlying RNG is temporarily unavailable. This causes KASLR seeding to fail, but does not affect boot correctness.
Currently, fdt_kaslrseed() treats this condition as a hard error and logs an error message, even though the system continues to boot normally. Downgrade the failure to a warning and continue booting without KASLR, making the behaviour explicit without implying a fatal error. Signed-off-by: Jamie Gibbons <[email protected]> --- boot/fdt_support.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/boot/fdt_support.c b/boot/fdt_support.c index 1c215e548db..aba1841a9f5 100644 --- a/boot/fdt_support.c +++ b/boot/fdt_support.c @@ -308,9 +308,16 @@ int fdt_kaslrseed(void *fdt, bool overwrite) return err; } err = dm_rng_read(dev, &data, sizeof(data)); - if (err) { - dev_err(dev, "dm_rng_read failed: %d\n", err); - return err; + if (err < 0) { + /* + * RNG may be unavailable during early boot. + * KASLR is best-effort in this case; warn and continue. + */ + dev_warn(dev, "KASLR seed unavailable (RNG error %d), continuing without KASLR\n", err); + return 0; + } else if (err != sizeof(data)) { + dev_warn(dev, "KASLR seed unavailable (no entropy), continuing without KASLR\n"); + return 0; } err = fdt_setprop(fdt, nodeoffset, "kaslr-seed", &data, sizeof(data)); if (err < 0) -- 2.43.0

