On Wed, Aug 14, 2024 at 06:19:15PM +0530, Neeraj Upadhyay wrote: > 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. How about something like this, but perhaps wordsmithed a bit? "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." Thanx, Paul > [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 > >