random: fix locking in crng_fast_load()
authorDominik Brodowski <linux@dominikbrodowski.net>
Sat, 5 Feb 2022 10:34:57 +0000 (11:34 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 30 May 2022 07:29:04 +0000 (09:29 +0200)
commit704c76e08804c496fca35d627215ad1011a20aa8
tree18eda8fb247146824f407691cdf2d516a66eaa39
parent67fdda9af773b124de1609d946da4a84507898dc
random: fix locking in crng_fast_load()

commit 7c2fe2b32bf76441ff5b7a425b384e5f75aa530a upstream.

crng_init is protected by primary_crng->lock, so keep holding that lock
when incrementing crng_init from 0 to 1 in crng_fast_load(). The call to
pr_notice() can wait until the lock is released; this code path cannot
be reached twice, as crng_fast_load() aborts early if crng_init > 0.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Reviewed-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/random.c