On Mon, Nov 11, 2024 at 04:47:49PM +0530, Neeraj Upadhyay wrote: > > > +/** > > + * srcu_read_unlock_lite - unregister a old reader from an SRCU-protected structure. > > + * @ssp: srcu_struct in which to unregister the old reader. > > + * @idx: return value from corresponding srcu_read_lock(). > > + * > > + * Exit a light-weight SRCU read-side critical section. > > + */ > > +static inline void srcu_read_unlock_lite(struct srcu_struct *ssp, int idx) > > + __releases(ssp) > > +{ > > + WARN_ON_ONCE(idx & ~0x1); > > + srcu_check_read_flavor(ssp, SRCU_READ_FLAVOR_LITE); > > + srcu_lock_release(&ssp->dep_map); > > + __srcu_read_unlock(ssp, idx); > > s/__srcu_read_unlock/__srcu_read_unlock_lite/ ? Right you are! I am testing the patch. The effect of this bug is that srcu_read_unlock_lite() has a needless memory barrier and fails to check for RCU watching, so not a blazing emergency. But it does mean that Andrii was only seeing half of the performance benefit of using _lite(). Thanx, Paul