rcu/kfree: Fix kfree_rcu_shrink_count() return value
authorJoel Fernandes (Google) <joel@joelfernandes.org>
Wed, 22 Jun 2022 22:51:02 +0000 (22:51 +0000)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 31 Aug 2022 12:06:50 +0000 (05:06 -0700)
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@joelfernandes.org>
Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree.c

index eb43594..3d234d5 100644 (file)
@@ -3372,7 +3372,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