OSDN Git Service

random: unify cycles_t and jiffies usage and types
authorJason A. Donenfeld <Jason@zx2c4.com>
Thu, 24 Feb 2022 17:30:58 +0000 (18:30 +0100)
committerJason A. Donenfeld <Jason@zx2c4.com>
Mon, 28 Feb 2022 15:05:25 +0000 (16:05 +0100)
commitabded93ec1e9692920fe309f07f40bd1035f2940
treed042f440d2b3905a541240d9673f385d38b2e9ce
parent64276a9939ff414f2f0db38036cf4e1a0a703394
random: unify cycles_t and jiffies usage and types

random_get_entropy() returns a cycles_t, not an unsigned long, which is
sometimes 64 bits on various 32-bit platforms, including x86.
Conversely, jiffies is always unsigned long. This commit fixes things to
use cycles_t for fields that use random_get_entropy(), named "cycles",
and unsigned long for fields that use jiffies, named "now". It's also
good to mix in a cycles_t and a jiffies in the same way for both
add_device_randomness and add_timer_randomness, rather than using xor in
one case. Finally, we unify the order of these volatile reads, always
reading the more precise cycles counter, and then jiffies, so that the
cycle counter is as close to the event as possible.

Cc: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
drivers/char/random.c