random: Use arch_get_random_seed*() at init time and once a second
authorH. Peter Anvin <hpa@linux.intel.com>
Mon, 17 Mar 2014 23:36:28 +0000 (16:36 -0700)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 20 Mar 2014 02:22:06 +0000 (22:22 -0400)
commit83664a6928a420b5ccfc0cf23ddbfe3634fea271
treeb8849a88a88a0894c1131a0234100a98b0d73d02
parentd20f78d252778e0fae8f8256e602bd682eb2185c
random: Use arch_get_random_seed*() at init time and once a second

Use arch_get_random_seed*() in two places in the Linux random
driver (drivers/char/random.c):

1. During entropy pool initialization, use RDSEED in favor of RDRAND,
   with a fallback to the latter.  Entropy exhaustion is unlikely to
   happen there on physical hardware as the machine is single-threaded
   at that point, but could happen in a virtual machine.  In that
   case, the fallback to RDRAND will still provide more than adequate
   entropy pool initialization.

2. Once a second, issue RDSEED and, if successful, feed it to the
   entropy pool.  To ensure an extra layer of security, only credit
   half the entropy just in case.

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Reviewed-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
drivers/char/random.c