lkml.org 
[lkml]   [2022]   [May]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 033/163] random: do not re-init if crng_reseed completes before primary init
    Date
    From: "Jason A. Donenfeld" <Jason@zx2c4.com>

    commit 9c3ddde3f811aabbb83778a2a615bf141b4909ef upstream.

    If the bootloader supplies sufficient material and crng_reseed() is called
    very early on, but not too early that wqs aren't available yet, then we
    might transition to crng_init==2 before rand_initialize()'s call to
    crng_initialize_primary() made. Then, when crng_initialize_primary() is
    called, if we're trusting the CPU's RDRAND instructions, we'll
    needlessly reinitialize the RNG and emit a message about it. This is
    mostly harmless, as numa_crng_init() will allocate and then free what it
    just allocated, and excessive calls to invalidate_batched_entropy()
    aren't so harmful. But it is funky and the extra message is confusing,
    so avoid the re-initialization all together by checking for crng_init <
    2 in crng_initialize_primary(), just as we already do in crng_reseed().

    Reviewed-by: Dominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/char/random.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/char/random.c
    +++ b/drivers/char/random.c
    @@ -827,7 +827,7 @@ static void __init crng_initialize_prima
    {
    chacha_init_consts(crng->state);
    _extract_entropy(&input_pool, &crng->state[4], sizeof(__u32) * 12, 0);
    - if (crng_init_try_arch_early(crng) && trust_cpu) {
    + if (crng_init_try_arch_early(crng) && trust_cpu && crng_init < 2) {
    invalidate_batched_entropy();
    numa_crng_init();
    crng_init = 2;

    \
     
     \ /
      Last update: 2022-05-27 13:43    [W:4.150 / U:0.596 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site