aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/random.c
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2018-04-12 00:50:45 -0400
committerTheodore Ts'o <tytso@mit.edu>2018-04-14 11:59:31 -0400
commit0bb29a849a6433b72e249eea7695477b02056e94 (patch)
tree8fe433e610984789e2ffe10d0ba68fc3694afeef /drivers/char/random.c
parent8ef35c866f8862df074a49a93b0309725812dea8 (diff)
random: crng_reseed() should lock the crng instance that it is modifying
Reported-by: Jann Horn <jannh@google.com> Fixes: 1e7f583af67b ("random: make /dev/urandom scalable for silly...") Cc: stable@kernel.org # 4.8+ Signed-off-by: Theodore Ts'o <tytso@mit.edu> Reviewed-by: Jann Horn <jannh@google.com>
Diffstat (limited to 'drivers/char/random.c')
-rw-r--r--drivers/char/random.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/char/random.c b/drivers/char/random.c
index 02d792f7933f..898233f594b4 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -906,7 +906,7 @@ static void crng_reseed(struct crng_state *crng, struct entropy_store *r)
906 _crng_backtrack_protect(&primary_crng, buf.block, 906 _crng_backtrack_protect(&primary_crng, buf.block,
907 CHACHA20_KEY_SIZE); 907 CHACHA20_KEY_SIZE);
908 } 908 }
909 spin_lock_irqsave(&primary_crng.lock, flags); 909 spin_lock_irqsave(&crng->lock, flags);
910 for (i = 0; i < 8; i++) { 910 for (i = 0; i < 8; i++) {
911 unsigned long rv; 911 unsigned long rv;
912 if (!arch_get_random_seed_long(&rv) && 912 if (!arch_get_random_seed_long(&rv) &&
@@ -916,7 +916,7 @@ static void crng_reseed(struct crng_state *crng, struct entropy_store *r)
916 } 916 }
917 memzero_explicit(&buf, sizeof(buf)); 917 memzero_explicit(&buf, sizeof(buf));
918 crng->init_time = jiffies; 918 crng->init_time = jiffies;
919 spin_unlock_irqrestore(&primary_crng.lock, flags); 919 spin_unlock_irqrestore(&crng->lock, flags);
920 if (crng == &primary_crng && crng_init < 2) { 920 if (crng == &primary_crng && crng_init < 2) {
921 invalidate_batched_entropy(); 921 invalidate_batched_entropy();
922 numa_crng_init(); 922 numa_crng_init();