Re: [PATCH] srcu: Queue sdp->work when the delay timer is successfully deleted
From: Zqiang
Date: Tue Aug 04 2026 - 18:00:00 EST
>
> On Mon, Aug 03, 2026 at 11:40:14PM +0000, Zqiang wrote:
>
> >
> > diff --git a/kernel/rcu/srcutree.c b/kernel/rcu/srcutree.c
> > index b9fe57ff9100..d13c12f61150 100644
> > --- a/kernel/rcu/srcutree.c
> > +++ b/kernel/rcu/srcutree.c
> > @@ -751,8 +751,9 @@ void cleanup_srcu_struct(struct srcu_struct *ssp)
> >
> > // Call srcu_barrier() before this cleanup_srcu_struct()
> > // to avoid triggering this WARN_ON().
> > - if (WARN_ON(timer_delete_sync(&sdp->delay_work)) &&
> > - rcu_cpu_beenfullyonline(sdp->cpu))
> > + if (WARN_ON(timer_delete_sync(&sdp->delay_work) &&
> > + rcu_segcblist_n_cbs(&sdp->srcu_cblist)) &&
> > + rcu_cpu_beenfullyonline(sdp->cpu))
> >
> Isn't the WARN_ON() the same? thus it will hit again?
WARN_ON(timer_delete_sync(&sdp->delay_work) && rcu_segcblist_n_cbs(&sdp->srcu_cblist))
Thanks
Zqiang
>