diff options
author | Paul E. McKenney <paulmck@kernel.org> | 2024-08-01 17:43:03 -0700 |
---|---|---|
committer | Neeraj Upadhyay <neeraj.upadhyay@kernel.org> | 2024-08-15 00:12:24 +0530 |
commit | 11377947b5861fa59bf77c827e1dd7c081842cc9 (patch) | |
tree | 6c0b73a4081f9d0c2931a909c4ca74186b678b97 | |
parent | 674fc922f06f7632ac94536ca92dd8addb606f46 (diff) | |
download | linux-11377947b5861fa59bf77c827e1dd7c081842cc9.tar.gz linux-11377947b5861fa59bf77c827e1dd7c081842cc9.tar.bz2 linux-11377947b5861fa59bf77c827e1dd7c081842cc9.zip |
rcuscale: Provide clear error when async specified without primitives
Currently, if the rcuscale module's async module parameter is specified
for RCU implementations that do not have async primitives such as RCU
Tasks Rude (which now lacks a call_rcu_tasks_rude() function), there
will be a series of splats due to calls to a NULL pointer. This commit
therefore warns of this situation, but switches to non-async testing.
Signed-off-by: "Paul E. McKenney" <paulmck@kernel.org>
Signed-off-by: Neeraj Upadhyay <neeraj.upadhyay@kernel.org>
-rw-r--r-- | kernel/rcu/rcuscale.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c index c507750e94d8..79e1c32d5c0f 100644 --- a/kernel/rcu/rcuscale.c +++ b/kernel/rcu/rcuscale.c @@ -525,7 +525,7 @@ rcu_scale_writer(void *arg) schedule_timeout_idle(torture_random(&tr) % writer_holdoff_jiffies + 1); wdp = &wdpp[i]; *wdp = ktime_get_mono_fast_ns(); - if (gp_async) { + if (gp_async && !WARN_ON_ONCE(!cur_ops->async)) { retry: if (!rhp) rhp = kmalloc(sizeof(*rhp), GFP_KERNEL); @@ -597,7 +597,7 @@ retry: i++; rcu_scale_wait_shutdown(); } while (!torture_must_stop()); - if (gp_async) { + if (gp_async && cur_ops->async) { cur_ops->gp_barrier(); } writer_n_durations[me] = i_max + 1; |