aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorVladimir Davydov <vdavydov@parallels.com>2015-02-12 17:59:44 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2015-02-12 21:54:10 -0500
commitce3712d74d8ed531a9fd0fbb711ff8fefbacdd9f (patch)
treeea28f9bef6a3eccd26a696a6c1254c358a01b2a9 /mm
parent832f37f5d5f5c7281880c21eb09508750b67f540 (diff)
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 <vdavydov@parallels.com> Acked-by: Christoph Lameter <cl@linux.com> Cc: Pekka Enberg <penberg@kernel.org> Cc: David Rientjes <rientjes@google.com> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/slub.c6
1 files changed, 5 insertions, 1 deletions
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)
3379 struct list_head discard; 3379 struct list_head discard;
3380 struct list_head promote[SHRINK_PROMOTE_MAX]; 3380 struct list_head promote[SHRINK_PROMOTE_MAX];
3381 unsigned long flags; 3381 unsigned long flags;
3382 int ret = 0;
3382 3383
3383 flush_all(s); 3384 flush_all(s);
3384 for_each_kmem_cache_node(s, node, n) { 3385 for_each_kmem_cache_node(s, node, n) {
@@ -3425,9 +3426,12 @@ int __kmem_cache_shrink(struct kmem_cache *s)
3425 /* Release empty slabs */ 3426 /* Release empty slabs */
3426 list_for_each_entry_safe(page, t, &discard, lru) 3427 list_for_each_entry_safe(page, t, &discard, lru)
3427 discard_slab(s, page); 3428 discard_slab(s, page);
3429
3430 if (slabs_node(s, node))
3431 ret = 1;
3428 } 3432 }
3429 3433
3430 return 0; 3434 return ret;
3431} 3435}
3432 3436
3433static int slab_mem_going_offline_callback(void *arg) 3437static int slab_mem_going_offline_callback(void *arg)