Some reason my scripting missed rcu list for these last 2 patches. But they are on the lkml list :) sorry.
Adding back rcu@. On 7/18/2026 1:15 PM, Joel Fernandes wrote: > Each scftorture_invoker() thread decrements n_started, which is > initialized to the number of threads, and is then supposed to wait > until all of its siblings have also checked in before starting the > test proper. However, the wait loop is guarded by > !atomic_dec_return(&n_started), which is true only for the final > thread to arrive, and by then n_started is already zero, so the > final thread does not wait either. The side-effect (possibly positive) > is that no thread ever waits and the start-synchronization barrier is > dead code, with early threads beginning to hammer smp_call_function*() > while later threads are still being spawned. > > Invert the test so that every thread other than the last spins until > n_started reaches zero, making the threads start testing together as > intended. The existing torture_must_stop() check in the wait loop > continues to bound the wait during shutdown. > > We can also drop the spinning entirely if the intent is to leave it as > dead code, however for the current intent, this patches fixes the code. > > Signed-off-by: Joel Fernandes <[email protected]> > --- > kernel/scftorture.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/scftorture.c b/kernel/scftorture.c > index ffd6c83732ee..392df1b4d4ed 100644 > --- a/kernel/scftorture.c > +++ b/kernel/scftorture.c > @@ -497,7 +497,7 @@ static int scftorture_invoker(void *arg) > "%s: Wanted CPU %d, running on %d, nr_cpu_ids = %d\n", > __func__, scfp->cpu, curcpu, nr_cpu_ids); > > - if (!atomic_dec_return(&n_started)) > + if (atomic_dec_return(&n_started)) > while (atomic_read_acquire(&n_started)) { > if (torture_must_stop()) { > VERBOSE_SCFTORTOUT("scftorture_invoker %d ended > before starting", scfp->cpu);

