diff --git a/drivers/char/random.c b/drivers/char/random.c index 91ea1fbac6f8c3bd923a2c4ffb5f9c50989dea47..8f29cbc0849e9dd02b85c6ec5875a5e7822446de 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -1988,7 +1988,10 @@ static long random_ioctl(struct file *f, unsigned int cmd, unsigned long arg) */ if (!capable(CAP_SYS_ADMIN)) return -EPERM; - input_pool.entropy_count = 0; + if (xchg(&input_pool.entropy_count, 0) && random_write_wakeup_bits) { + wake_up_interruptible(&random_write_wait); + kill_fasync(&fasync, SIGIO, POLL_OUT); + } return 0; case RNDRESEEDCRNG: if (!capable(CAP_SYS_ADMIN))