Re: [PATCH v2 8/8] rcu/kfree: Fix kfree_rcu_shrink_count() return value

From: Paul E. McKenney
Date: Mon Jun 27 2022 - 17:44:05 EST


On Mon, Jun 27, 2022 at 09:18:13PM +0000, Joel Fernandes wrote:
> On Mon, Jun 27, 2022 at 01:59:07PM -0700, Paul E. McKenney wrote:
> > On Mon, Jun 27, 2022 at 08:56:43PM +0200, Uladzislau Rezki wrote:
> > > > As per the comments in include/linux/shrinker.h, .count_objects callback
> > > > should return the number of freeable items, but if there are no objects
> > > > to free, SHRINK_EMPTY should be returned. The only time 0 is returned
> > > > should be when we are unable to determine the number of objects, or the
> > > > cache should be skipped for another reason.
> > > >
> > > > Signed-off-by: Joel Fernandes (Google) <joel@xxxxxxxxxxxxxxxxx>
> > > > ---
> > > > kernel/rcu/tree.c | 2 +-
> > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
> > > > index 711679d10cbb..935788e8d2d7 100644
> > > > --- a/kernel/rcu/tree.c
> > > > +++ b/kernel/rcu/tree.c
> > > > @@ -3722,7 +3722,7 @@ kfree_rcu_shrink_count(struct shrinker *shrink, struct shrink_control *sc)
> > > > atomic_set(&krcp->backoff_page_cache_fill, 1);
> > > > }
> > > >
> > > > - return count;
> > > > + return count == 0 ? SHRINK_EMPTY : count;
> > > > }
> > > >
> > > > static unsigned long
> > > > --
> > > > 2.37.0.rc0.104.g0611611a94-goog
> > > >
> > > Looks good to me!
> > >
> > > Reviewed-by: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx>
> >
> > Now that you mention it, this does look independent of the rest of
> > the series. I have pulled it in with Uladzislau's Reviewed-by.
>
> Thanks Paul and Vlad!
>
> Paul, apologies for being quiet. I have been working on the series and the
> review comments carefully. I appreciate your help with this work.

Not a problem. After all, this stuff is changing some of the trickier
parts of RCU. We must therefore assume that some significant time and
effort will be required to get it right.

Thanx, Paul