BACKPORT: random: Wake up all getrandom(2) callers when pool is ready

Clean cherry pick of 1d9de44e268d880cbe2d0bd3be1ef0661f93fd34.

If more than one application invokes getrandom(2) before the pool
is ready, then all bar one will be stuck forever because we use
wake_up_interruptible which wakes up a single task.

This patch replaces it with wake_up_all.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

Bug: http://b/29621447
Change-Id: I5dfd7abac10898802f030e0a2af7110809283328
(cherry picked from commit 1d9de44e268d880cbe2d0bd3be1ef0661f93fd34)
This commit is contained in:
Herbert Xu 2015-05-21 16:19:54 +08:00 committed by Artem Borisov
parent 86739403f2
commit b09ea83ef0

View file

@ -602,7 +602,7 @@ retry:
r->entropy_total = 0;
if (r == &nonblocking_pool) {
prandom_reseed_late();
wake_up_interruptible(&urandom_init_wait);
wake_up_all(&urandom_init_wait);
pr_notice("random: %s pool is initialized\n", r->name);
}
}