diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2022-02-12 01:26:17 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2022-02-21 21:14:17 +0100 |
commit | afba0b80b977b2a8f16234f2acd982f82710ba33 (patch) | |
tree | 99864ad1e0b16d744af6e4b393c53a8fd709c051 | |
parent | 58340f8e952b613e0ead0bed58b97b05bf4743c5 (diff) | |
download | linux-afba0b80b977b2a8f16234f2acd982f82710ba33.tar.bz2 |
random: do not take pool spinlock at boot
Since rand_initialize() is run while interrupts are still off and
nothing else is running, we don't need to repeatedly take and release
the pool spinlock, especially in the RDSEED loop.
Reviewed-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r-- | drivers/char/random.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/char/random.c b/drivers/char/random.c index 26cbfcaa3b78..0541066e2e5c 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -978,10 +978,10 @@ int __init rand_initialize(void) rv = random_get_entropy(); arch_init = false; } - mix_pool_bytes(&rv, sizeof(rv)); + _mix_pool_bytes(&rv, sizeof(rv)); } - mix_pool_bytes(&now, sizeof(now)); - mix_pool_bytes(utsname(), sizeof(*(utsname()))); + _mix_pool_bytes(&now, sizeof(now)); + _mix_pool_bytes(utsname(), sizeof(*(utsname()))); extract_entropy(base_crng.key, sizeof(base_crng.key)); ++base_crng.generation; |