Re: [PATCH] hazptrtorture: Fix inverted sleep condition in do_pending kthread
From: Paul E. McKenney
Date: Sat Sep 05 2026 - 16:40:41 EST
On Fri, Sep 04, 2026 at 06:28:45PM +0100, Bradley Morgan wrote:
> On 4 September 2026 17:00:22 BST, "Paul E. McKenney" <paulmck@xxxxxxxxxx>
> wrote:
> >On Fri, Sep 04, 2026 at 09:01:05AM -0400, Mathieu Desnoyers wrote:
> >> On 2026-08-03 20:03, Bradley Morgan wrote:
> >> > The do_pending kthread never sleeps. Its supposed to.
> >> > kthread_do_pending_ms sets the gap between cleanups, and the docs
> >> > say so too. But the sleep sits behind torture_must_stop(), and thats
> >> > false while the test runs. So the kthread never sleeps. It just loops.
> >> > It drains the pending lists over and over, no pause, and burns a full
> >> > CPU for the whole test.
> >>
> >> Paul, I just found this patch in my junk email folder. Maybe relevant
> >> for you ?
> >
> >We got it in my -rcu tree:
> >
> >15b9fca2f5ce ("hazptrtorture: Fix inverted sleep condition in do_pending
> >kthread")
> >
> >But I do appreciate your checking for missed patches, thank you!
> >
> > Thanx, Paul
> >
> >> Thanks,
> >>
> >> Mathieu
> >>
> >> >
> >> > Flip the check. With !torture_must_stop() it sleeps for
> >> > kthread_do_pending_ms between passes. When the test stops it does one
> >> > last cleanup and exits. Nothing left to do, so no sleep needed then.
> >> >
> >> > Fixes: 94d2e93c222e ("hazptrtorture: Add kthread to release deferred
> >hazard pointers")
> >> > Signed-off-by: Bradley Morgan <include@xxxxxxxxx>
> >> > ---
> >> > kernel/rcu/hazptrtorture.c | 2 +-
> >> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >> >
> >> > diff --git a/kernel/rcu/hazptrtorture.c b/kernel/rcu/hazptrtorture.c
> >> > index 72aeb50668e9..7c8b5899fb01 100644
> >> > --- a/kernel/rcu/hazptrtorture.c
> >> > +++ b/kernel/rcu/hazptrtorture.c
> >> > @@ -555,7 +555,7 @@ static int hazptr_torture_do_pending(void *arg)
> >> > cpu = cpumask_next_wrap(cpu, cpu_possible_mask);
> >> > hazptr_torture_do_one_pending(cpu, &rand);
> >> > }
> >> > - if (torture_must_stop())
> >> > + if (!torture_must_stop())
> >> > torture_hrtimeout_ms(kthread_do_pending_ms, USEC_PER_MSEC, &rand);
> >> > // Omit stutter_wait() because this function needs to do cleanup.
> >> > } while (!torture_must_stop());
> >>
> >>
> >> --
> >> Mathieu Desnoyers
> >> EfficiOS Inc.
> >> https://www.efficios.com
> >
> >
> Hi, new email.
>
> Could I ask where the heck hazptr is? Its not in next, would you like,
> help???
>
> --- Thanks!
> https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@xxxxxxxxx/
It is still in my -rcu tree.
I would not say "no" to a fix for this issue:
https://lore.kernel.org/all/EE579805-42F2-4C58-B752-F28779EEB717@xxxxxxxxx/
Once that is in place, I would be happy to put this back into -next.
At some point, we will need to get rid of the concept of wildcard hazard
pointers, as those end up instead emulating RCU, but I don't see that
as an immediate obstacle.
Thanx, Paul