Re: eb9d1bf079 [ 88.881528] EIP: _random_read

From: Rong Chen
Date: Mon May 27 2019 - 20:31:17 EST



On 5/23/19 12:24 AM, Theodore Ts'o wrote:
Can you check and see if this addresses the issue? I'm not able to
easily repro the softlockup.

Hi,

The patch could fix the issue in our testing environment.

Best Regards,
Rong Chen



Thanks!

- Ted

commit f93d3e94983bf8b4697ceb121c79afd941862860
Author: Theodore Ts'o <tytso@xxxxxxx>
Date: Wed May 22 12:02:16 2019 -0400

random: fix soft lockup when trying to read from an uninitialized blocking pool
Fixes: eb9d1bf079bb: "random: only read from /dev/random after its pool has received 128 bits"
Reported-by: kernel test robot <lkp@xxxxxxxxx>
Signed-off-by: Theodore Ts'o <tytso@xxxxxxx>

diff --git a/drivers/char/random.c b/drivers/char/random.c
index a42b3d764da8..9cea93d0bfb3 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -1936,8 +1936,8 @@ _random_read(int nonblock, char __user *buf, size_t nbytes)
return -EAGAIN;
wait_event_interruptible(random_read_wait,
- ENTROPY_BITS(&input_pool) >=
- random_read_wakeup_bits);
+ blocking_pool.initialized &&
+ (ENTROPY_BITS(&input_pool) >= random_read_wakeup_bits));
if (signal_pending(current))
return -ERESTARTSYS;
}