random: use registers from interrupted code for CPU's w/o a cycle counter
authorTheodore Ts'o <tytso@mit.edu>
Sun, 15 Jun 2014 20:59:24 +0000 (16:59 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 15 Jul 2014 08:49:41 +0000 (04:49 -0400)
commitee3e00e9e7101c80a2ff2d5672d4b486bf001b88
treef998536715e46e9b2e14068137ec09c4fe8946c4
parent0f734e6e768b4b66737b3d3e13f1769a12ecff86
random: use registers from interrupted code for CPU's w/o a cycle counter

For CPU's that don't have a cycle counter, or something equivalent
which can be used for random_get_entropy(), random_get_entropy() will
always return 0.  In that case, substitute with the saved interrupt
registers to add a bit more unpredictability.

Some folks have suggested hashing all of the registers
unconditionally, but this would increase the overhead of
add_interrupt_randomness() by at least an order of magnitude, and this
would very likely be unacceptable.

The changes in this commit have been benchmarked as mostly unaffecting
the overhead of add_interrupt_randomness() if the entropy counter is
present, and doubling the overhead if it is not present.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: Jörn Engel <joern@logfs.org>
drivers/char/random.c