Re: [PATCH] srcu: Queue sdp->work when the delay timer is successfully deleted

"Zqiang" <[email protected]> Tue, 04 Aug 2026 21:58:52 +0000
Newsgroups org.kernel.vger.rcu,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
>=20
>=20On Mon, Aug 03, 2026 at 11:40:14PM +0000, Zqiang wrote:
>=20
>=20>=20
>=20> 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=
)
> >=20=20
>=20>  // 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))
> >=20
>=20Isn'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

>