According to a comment in random.c, crng_init is protected by primary_crng->lock. These two patches fix the locking for writing tp (that is: increasing) crng_init in call sites where it may matter. At rand_initialize() time (precisely: either in crng_initialize_primary() or in crng_finalize_init()), crng_init is set to 2 without the lock being held. However, then the kernel is running with IRQs disabled and only the boot CPU active (but not yet in PID 1). Dominik Brodowski (2): random: fix locking in crng_fast_load() random: fix locking for crng_init in crng_reseed() drivers/char/random.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) -- 2.35.1