From: Vladimir Davydov Date: Thu, 12 Feb 2015 22:59:44 +0000 (-0800) Subject: slub: fix kmem_cache_shrink return value X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=ce3712d74d8ed531a9fd0fbb711ff8fefbacdd9f;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git slub: fix kmem_cache_shrink return value It is supposed to return 0 if the cache has no remaining objects and 1 otherwise, while currently it always returns 0. Fix it. Signed-off-by: Vladimir Davydov Acked-by: Christoph Lameter Cc: Pekka Enberg Cc: David Rientjes Cc: Joonsoo Kim Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/mm/slub.c b/mm/slub.c index d97b692165d2..7fa27aee9b6e 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -3379,6 +3379,7 @@ int __kmem_cache_shrink(struct kmem_cache *s) struct list_head discard; struct list_head promote[SHRINK_PROMOTE_MAX]; unsigned long flags; + int ret = 0; flush_all(s); for_each_kmem_cache_node(s, node, n) { @@ -3425,9 +3426,12 @@ int __kmem_cache_shrink(struct kmem_cache *s) /* Release empty slabs */ list_for_each_entry_safe(page, t, &discard, lru) discard_slab(s, page); + + if (slabs_node(s, node)) + ret = 1; } - return 0; + return ret; } static int slab_mem_going_offline_callback(void *arg)