From: Greg Kroah-Hartman Date: Sat, 25 Jun 2022 14:51:01 +0000 (+0200) Subject: 4.14-stable patches X-Git-Tag: v5.10.126~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=395ea8717c6e866a09f51efa9d52605d395da1dd;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: random-quiet-urandom-warning-ratelimit-suppression-message.patch --- diff --git a/queue-4.14/random-quiet-urandom-warning-ratelimit-suppression-message.patch b/queue-4.14/random-quiet-urandom-warning-ratelimit-suppression-message.patch new file mode 100644 index 00000000000..102bdfe7dd2 --- /dev/null +++ b/queue-4.14/random-quiet-urandom-warning-ratelimit-suppression-message.patch @@ -0,0 +1,72 @@ +From c01d4d0a82b71857be7449380338bc53dde2da92 Mon Sep 17 00:00:00 2001 +From: "Jason A. Donenfeld" +Date: Thu, 16 Jun 2022 15:00:51 +0200 +Subject: random: quiet urandom warning ratelimit suppression message + +From: Jason A. Donenfeld + +commit c01d4d0a82b71857be7449380338bc53dde2da92 upstream. + +random.c ratelimits how much it warns about uninitialized urandom reads +using __ratelimit(). When the RNG is finally initialized, it prints the +number of missed messages due to ratelimiting. + +It has been this way since that functionality was introduced back in +2018. Recently, cc1e127bfa95 ("random: remove ratelimiting for in-kernel +unseeded randomness") put a bit more stress on the urandom ratelimiting, +which teased out a bug in the implementation. + +Specifically, when under pressure, __ratelimit() will print its own +message and reset the count back to 0, making the final message at the +end less useful. Secondly, it does so as a pr_warn(), which apparently +is undesirable for people's CI. + +Fortunately, __ratelimit() has the RATELIMIT_MSG_ON_RELEASE flag exactly +for this purpose, so we set the flag. + +Fixes: 4e00b339e264 ("random: rate limit unseeded randomness warnings") +Cc: stable@vger.kernel.org +Reported-by: Jon Hunter +Reported-by: Ron Economos +Tested-by: Ron Economos +Signed-off-by: Jason A. Donenfeld +Signed-off-by: Greg Kroah-Hartman +--- + drivers/char/random.c | 2 +- + include/linux/ratelimit.h | 12 ++++++++---- + 2 files changed, 9 insertions(+), 5 deletions(-) + +--- a/drivers/char/random.c ++++ b/drivers/char/random.c +@@ -88,7 +88,7 @@ static RAW_NOTIFIER_HEAD(random_ready_ch + + /* Control how we warn userspace. */ + static struct ratelimit_state urandom_warning = +- RATELIMIT_STATE_INIT("warn_urandom_randomness", HZ, 3); ++ RATELIMIT_STATE_INIT_FLAGS("urandom_warning", HZ, 3, RATELIMIT_MSG_ON_RELEASE); + static int ratelimit_disable __read_mostly = + IS_ENABLED(CONFIG_WARN_ALL_UNSEEDED_RANDOM); + module_param_named(ratelimit_disable, ratelimit_disable, int, 0644); +--- a/include/linux/ratelimit.h ++++ b/include/linux/ratelimit.h +@@ -23,12 +23,16 @@ struct ratelimit_state { + unsigned long flags; + }; + +-#define RATELIMIT_STATE_INIT(name, interval_init, burst_init) { \ +- .lock = __RAW_SPIN_LOCK_UNLOCKED(name.lock), \ +- .interval = interval_init, \ +- .burst = burst_init, \ ++#define RATELIMIT_STATE_INIT_FLAGS(name, interval_init, burst_init, flags_init) { \ ++ .lock = __RAW_SPIN_LOCK_UNLOCKED(name.lock), \ ++ .interval = interval_init, \ ++ .burst = burst_init, \ ++ .flags = flags_init, \ + } + ++#define RATELIMIT_STATE_INIT(name, interval_init, burst_init) \ ++ RATELIMIT_STATE_INIT_FLAGS(name, interval_init, burst_init, 0) ++ + #define RATELIMIT_STATE_INIT_DISABLED \ + RATELIMIT_STATE_INIT(ratelimit_state, 0, DEFAULT_RATELIMIT_BURST) + diff --git a/queue-4.14/series b/queue-4.14/series index e349bfa39de..14643e281e4 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -2,3 +2,4 @@ vt-drop-old-font-ioctls.patch random-schedule-mix_interrupt_randomness-less-often.patch ata-libata-add-qc-flags-in-ata_qc_complete_template-tracepoint.patch dm-era-commit-metadata-in-postsuspend-after-worker-stops.patch +random-quiet-urandom-warning-ratelimit-suppression-message.patch