random32: add prandom_reseed_late() and call when nonblocking pool becomes initialized
authorHannes Frederic Sowa <hannes@stressinduktion.org>
Mon, 11 Nov 2013 11:20:34 +0000 (12:20 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 11 Nov 2013 19:32:14 +0000 (14:32 -0500)
commit4af712e8df998475736f3e2727701bd31e3751a9
tree315b7092cf6ee0aeb3a180a09f8d628984cd9ddf
parent6d31920246a9fc80be4f16acd27c0bbe8d7b8494
random32: add prandom_reseed_late() and call when nonblocking pool becomes initialized

The Tausworthe PRNG is initialized at late_initcall time. At that time the
entropy pool serving get_random_bytes is not filled sufficiently. This
patch adds an additional reseeding step as soon as the nonblocking pool
gets marked as initialized.

On some machines it might be possible that late_initcall gets called after
the pool has been initialized. In this situation we won't reseed again.

(A call to prandom_seed_late blocks later invocations of early reseed
attempts.)

Joint work with Daniel Borkmann.

Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Acked-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/char/random.c
include/linux/random.h
lib/random32.c