On Thu, Sep 10, 2026 at 10:16:39AM +0800, kernel test robot wrote:
> On Tue, Sep 08, 2026 at 11:22:14AM -0400, Mathieu Desnoyers wrote:
> > When hazptr_acquire loads a NULL pointer, it sets:
> >
> > - slot_item->slot.addr = NULL,
> > - slot_item->ctx.ctx = ctx
> > - ctx->slot = slot
> >
> > And it returns NULL.
> >
> > Then hazptr_detach is called on this ctx, it will act on the ctx as if
> > needed to be promoted to backup slot, even though it has a NULL addr.
> >
> > Looking at what hazptr_note_context_switch() does before promoting
> > to backup slot, it checks for a NULL slot->addr, which is exactly
> > what is missing from hazptr_detach.
> >
> > With this in place there would be no need to explicitly check the
> > hazptr_acquire() return value before calling hazptr_detach().
> >
> > hazptr_release() has a early return check for NULL addr as well, so it
> > makes sense that detach does an early return (no-op) similarly.
> >
> > Fixes: 6357ec235c59 ("hazptrtorture: Fix hazptr ownership issue")
> > Reported-by: kernel test robot <[email protected]>
> > Closes: https://lore.kernel.org/oe-lkp/[email protected]
> > Signed-off-by: Mathieu Desnoyers <[email protected]>
> > Reviewed-by: Bradley Morgan <[email protected]>
> > Cc: Paul E. McKenney <[email protected]>
> > Cc: Boqun Feng <[email protected]>
> > Cc: Bradley Morgan <[email protected]>
> > Cc: <[email protected]>
> > Cc: <[email protected]>
> > ---
> > include/linux/hazptr.h | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/include/linux/hazptr.h b/include/linux/hazptr.h
> > index 43122c5673bd..d1670121947a 100644
> > --- a/include/linux/hazptr.h
> > +++ b/include/linux/hazptr.h
> > @@ -160,10 +160,12 @@ void hazptr_detach(struct hazptr_ctx *ctx)
> > struct hazptr_slot *slot;
> >
> > guard(preempt)();
> > + slot = ctx->slot;
> > + if (!slot->addr)
> > + return;
> > #ifdef CONFIG_HAZPTR_DEBUG
> > ctx->detach_task = ctx->detach_cpu = true;
> > #endif
> > - slot = ctx->slot;
> > if (unlikely(hazptr_slot_is_backup(ctx, slot)))
> > return;
> > hazptr_promote_to_backup_slot(ctx, slot);
> > --
> > 2.43.0
> >
>
> Applied this fix patch on top of Pual's v2 RFC patch series. The issue
> cannot be reproduce.
>
> Tested-by: kernel test robot <[email protected]>
Thank you! I will apply this on my next rebase.
Thanx, Paul