Loading drivers/char/random.c +13 −3 Original line number Diff line number Diff line Loading @@ -772,8 +772,11 @@ static void credit_entropy_bits(struct entropy_store *r, int nbits) if (cmpxchg(&r->entropy_count, orig, entropy_count) != orig) goto retry; if (has_initialized) if (has_initialized) { r->initialized = 1; wake_up_interruptible(&random_read_wait); kill_fasync(&fasync, SIGIO, POLL_IN); } trace_credit_entropy_bits(r->name, nbits, entropy_count >> ENTROPY_SHIFT, _RET_IP_); Loading @@ -789,6 +792,13 @@ static void credit_entropy_bits(struct entropy_store *r, int nbits) entropy_bits = r->entropy_count >> ENTROPY_SHIFT; } /* initialize the blocking pool if necessary */ if (entropy_bits >= random_read_wakeup_bits && !other->initialized) { schedule_work(&other->push_work); return; } /* should we wake readers? */ if (entropy_bits >= random_read_wakeup_bits && wq_has_sleeper(&random_read_wait)) { Loading Loading @@ -1936,8 +1946,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; } Loading Loading
drivers/char/random.c +13 −3 Original line number Diff line number Diff line Loading @@ -772,8 +772,11 @@ static void credit_entropy_bits(struct entropy_store *r, int nbits) if (cmpxchg(&r->entropy_count, orig, entropy_count) != orig) goto retry; if (has_initialized) if (has_initialized) { r->initialized = 1; wake_up_interruptible(&random_read_wait); kill_fasync(&fasync, SIGIO, POLL_IN); } trace_credit_entropy_bits(r->name, nbits, entropy_count >> ENTROPY_SHIFT, _RET_IP_); Loading @@ -789,6 +792,13 @@ static void credit_entropy_bits(struct entropy_store *r, int nbits) entropy_bits = r->entropy_count >> ENTROPY_SHIFT; } /* initialize the blocking pool if necessary */ if (entropy_bits >= random_read_wakeup_bits && !other->initialized) { schedule_work(&other->push_work); return; } /* should we wake readers? */ if (entropy_bits >= random_read_wakeup_bits && wq_has_sleeper(&random_read_wait)) { Loading Loading @@ -1936,8 +1946,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; } Loading