diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2022-02-22 14:01:57 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2022-02-24 16:32:35 +0100 |
commit | a3f9e8910e1584d7725ef7d5ac870920d42d0bb4 (patch) | |
tree | fff59506c16c2deeda60cca2e8a4c76b97cd9dd9 /drivers/char/random.c | |
parent | random: round-robin registers as ulong, not u32 (diff) | |
download | linux-a3f9e8910e1584d7725ef7d5ac870920d42d0bb4.tar.xz linux-a3f9e8910e1584d7725ef7d5ac870920d42d0bb4.zip |
random: only wake up writers after zap if threshold was passed
The only time that we need to wake up /dev/random writers on
RNDCLEARPOOL/RNDZAPPOOL is when we're changing from a value that is
greater than or equal to POOL_MIN_BITS to zero, because if we're
changing from below POOL_MIN_BITS to zero, the writers are already
unblocked.
Cc: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to '')
-rw-r--r-- | drivers/char/random.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/char/random.c b/drivers/char/random.c index a4dedeea35e9..536237a0f073 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -1582,7 +1582,7 @@ static long random_ioctl(struct file *f, unsigned int cmd, unsigned long arg) */ if (!capable(CAP_SYS_ADMIN)) return -EPERM; - if (xchg(&input_pool.entropy_count, 0)) { + if (xchg(&input_pool.entropy_count, 0) >= POOL_MIN_BITS) { wake_up_interruptible(&random_write_wait); kill_fasync(&fasync, SIGIO, POLL_OUT); } |