In commit 253d3194c2b5 ("random: add arch_get_random_*long_early()") we introduced _early versions of arch_get_random_long(), that are used on arm64 to use the CPU RNDR instruction early in the boot process, before we have established system-wide availability. This covers the calls in crng_initialize_primary(), but missed the calls in init_std_data(), happening just before that.
Use the _early versions of the arch_get_random* calls also in init_std_data(), to help initialising the pool with proper seed values. Fixes: 253d3194c2b5 ("random: add arch_get_random_*long_early()") Cc: Mark Rutland <mark.rutl...@arm.com> Signed-off-by: Andre Przywara <andre.przyw...@arm.com> --- drivers/char/random.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/char/random.c b/drivers/char/random.c index 2a41b21623ae..43bb331a67bd 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -1778,8 +1778,8 @@ static void __init init_std_data(struct entropy_store *r) mix_pool_bytes(r, &now, sizeof(now)); for (i = r->poolinfo->poolbytes; i > 0; i -= sizeof(rv)) { - if (!arch_get_random_seed_long(&rv) && - !arch_get_random_long(&rv)) + if (!arch_get_random_seed_long_early(&rv) && + !arch_get_random_long_early(&rv)) rv = random_get_entropy(); mix_pool_bytes(r, &rv, sizeof(rv)); } -- 2.17.1