rcu: Allow up to five minutes expedited RCU CPU stall-warning timeouts
authorPaul E. McKenney <paulmck@kernel.org>
Tue, 6 Dec 2022 17:38:39 +0000 (09:38 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 9 Jan 2023 20:09:52 +0000 (12:09 -0800)
The maximum value of RCU CPU stall-warning timeouts has historically been
five minutes (300 seconds).  However, the recently introduced expedited
RCU CPU stall-warning timeout is instead limited to 21 seconds.  This
causes problems for CI/fuzzing services such as syzkaller by obscuring
the issue in question with expedited RCU CPU stall-warning timeout splats.

This commit therefore sets the RCU_EXP_CPU_STALL_TIMEOUT Kconfig options
upper bound to 300000 milliseconds, which is 300 seconds (AKA 5 minutes).

[ paulmck: Apply feedback from Hillf Danton. ]
[ paulmck: Apply feedback from Geert Uytterhoeven. ]

Reported-by: Dave Chinner <david@fromorbit.com>
Reported-by: Dmitry Vyukov <dvyukov@google.com>
Tested-by: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/Kconfig.debug
kernel/rcu/tree_stall.h

index 49da904df6aa6b6ba2fbddb4e8f5de2edb93c9a9..2984de629f7494d6dde1e936197eca987520c69f 100644 (file)
@@ -82,7 +82,7 @@ config RCU_CPU_STALL_TIMEOUT
 config RCU_EXP_CPU_STALL_TIMEOUT
        int "Expedited RCU CPU stall timeout in milliseconds"
        depends on RCU_STALL_COMMON
-       range 0 21000
+       range 0 300000
        default 0
        help
          If a given expedited RCU grace period extends more than the
index f360894f5599d9d91ffb6393982132e65c3d6cda..b10b8349bb2a48bb81b7027cf5b32cd75dbb357d 100644 (file)
@@ -39,7 +39,7 @@ int rcu_exp_jiffies_till_stall_check(void)
        // CONFIG_RCU_EXP_CPU_STALL_TIMEOUT, so check the allowed range.
        // The minimum clamped value is "2UL", because at least one full
        // tick has to be guaranteed.
-       till_stall_check = clamp(msecs_to_jiffies(cpu_stall_timeout), 2UL, 21UL * HZ);
+       till_stall_check = clamp(msecs_to_jiffies(cpu_stall_timeout), 2UL, 300UL * HZ);
 
        if (cpu_stall_timeout && jiffies_to_msecs(till_stall_check) != cpu_stall_timeout)
                WRITE_ONCE(rcu_exp_cpu_stall_timeout, jiffies_to_msecs(till_stall_check));