History

Merge tag 'random-5.19-rc4-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/crng/random

Pull random number generator fixes from Jason Donenfeld: - A change to schedule the interrupt randomness mixing less often, yet credit a little more each time, to reduce overhead during interrupt storms. - Squelch an undesired pr_warn() from __ratelimit(), which was causing problems in the reporters' CI. - A trivial comment fix. * tag 'random-5.19-rc4-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/crng/random: random: update comment from copy_to_user() -> copy_to_iter() random: quiet urandom warning ratelimit suppression message random: schedule mix_interrupt_randomness() less often

Linus Torvalds committed 4 years ago

Commit ba461af2 parents fa1796a 63b8ea52 files · +11 −7Browse files

Unified · Split

2 files
  1. drivers/char/random.c +3 −3
  2. include/linux/ratelimit_types.h +8 −4
drivers/char/random.c+3−3
@@ -87,7 +87,7 @@ static struct fasync_struct *fasync; · 86 unmodified lines
87 87
88/* Control how we warn userspace. */88/* Control how we warn userspace. */
89static struct ratelimit_state urandom_warning =89static struct ratelimit_state urandom_warning =
90 RATELIMIT_STATE_INIT("warn_urandom_randomness", HZ, 3);90 RATELIMIT_STATE_INIT_FLAGS("urandom_warning", HZ, 3, RATELIMIT_MSG_ON_RELEASE);
91static int ratelimit_disable __read_mostly =91static int ratelimit_disable __read_mostly =
92 IS_ENABLED(CONFIG_WARN_ALL_UNSEEDED_RANDOM);92 IS_ENABLED(CONFIG_WARN_ALL_UNSEEDED_RANDOM);
93module_param_named(ratelimit_disable, ratelimit_disable, int, 0644);93module_param_named(ratelimit_disable, ratelimit_disable, int, 0644);
@@ -408,7 +408,7 @@ static ssize_t get_random_bytes_user(struct iov_iter *iter) · 314 unmodified lines
408 408
409 /*409 /*
410 * Immediately overwrite the ChaCha key at index 4 with random410 * Immediately overwrite the ChaCha key at index 4 with random
411 * bytes, in case userspace causes copy_to_user() below to sleep411 * bytes, in case userspace causes copy_to_iter() below to sleep
412 * forever, so that we still retain forward secrecy in that case.412 * forever, so that we still retain forward secrecy in that case.
413 */413 */
414 crng_make_state(chacha_state, (u8 *)&chacha_state[4], CHACHA_KEY_SIZE);414 crng_make_state(chacha_state, (u8 *)&chacha_state[4], CHACHA_KEY_SIZE);
@@ -1009,7 +1009,7 @@ void add_interrupt_randomness(int irq) · 594 unmodified lines
1009 if (new_count & MIX_INFLIGHT)1009 if (new_count & MIX_INFLIGHT)
1010 return;1010 return;
1011 1011
1012 if (new_count < 64 && !time_is_before_jiffies(fast_pool->last + HZ))1012 if (new_count < 1024 && !time_is_before_jiffies(fast_pool->last + HZ))
1013 return;1013 return;
1014 1014
1015 if (unlikely(!fast_pool->mix.func))1015 if (unlikely(!fast_pool->mix.func))
include/linux/ratelimit_types.h+8−4
@@ -23,12 +23,16 @@ struct ratelimit_state { · 22 unmodified lines
23 unsigned long flags;23 unsigned long flags;
24};24};
25 25
26#define RATELIMIT_STATE_INIT(name, interval_init, burst_init) { \26#define RATELIMIT_STATE_INIT_FLAGS(name, interval_init, burst_init, flags_init) { \
27 .lock = __RAW_SPIN_LOCK_UNLOCKED(name.lock), \27 .lock = __RAW_SPIN_LOCK_UNLOCKED(name.lock), \
28 .interval = interval_init, \28 .interval = interval_init, \
29 .burst = burst_init, \29 .burst = burst_init, \
30 .flags = flags_init, \
30 }31 }
31 32
33#define RATELIMIT_STATE_INIT(name, interval_init, burst_init) \
34 RATELIMIT_STATE_INIT_FLAGS(name, interval_init, burst_init, 0)
35
32#define RATELIMIT_STATE_INIT_DISABLED \36#define RATELIMIT_STATE_INIT_DISABLED \
33 RATELIMIT_STATE_INIT(ratelimit_state, 0, DEFAULT_RATELIMIT_BURST)37 RATELIMIT_STATE_INIT(ratelimit_state, 0, DEFAULT_RATELIMIT_BURST)
34 38