On Thu, Aug 01, 2024 at 05:43:03PM -0700, Paul E. McKenney wrote: > Currently, if the rcuscale module's async module parameter is specified > for RCU implementations that do not have sync primitives such as > call_rcu(), 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. > I have changed this to below here [1]. Please let me know if I got it wrong. 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, 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. [1] https://git.kernel.org/pub/scm/linux/kernel/git/neeraj.upadhyay/linux-rcu.git/commit/?h=next.14.08.24b&id=22d36840adbcab8fd826a7ca827fd60b708f03de - Neeraj > Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxx> > --- > kernel/rcu/rcuscale.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c > index 933014b381ec0..315ced63ec105 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 @@ rcu_scale_writer(void *arg) > 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; > -- > 2.40.1 >