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)