diff options
author | Paul E. McKenney <[email protected]> | 2024-08-01 17:43:03 -0700 |
---|---|---|
committer | Neeraj Upadhyay <[email protected]> | 2024-08-15 00:12:24 +0530 |
commit | 11377947b5861fa59bf77c827e1dd7c081842cc9 (patch) | |
tree | 6c0b73a4081f9d0c2931a909c4ca74186b678b97 | |
parent | 674fc922f06f7632ac94536ca92dd8addb606f46 (diff) |
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" <[email protected]>
Signed-off-by: Neeraj Upadhyay <[email protected]>
-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; |