diff options
author | Vladimir Davydov <vdavydov@parallels.com> | 2015-02-12 17:59:44 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-12 21:54:10 -0500 |
commit | ce3712d74d8ed531a9fd0fbb711ff8fefbacdd9f (patch) | |
tree | ea28f9bef6a3eccd26a696a6c1254c358a01b2a9 /mm | |
parent | 832f37f5d5f5c7281880c21eb09508750b67f540 (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.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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 | ||
3433 | static int slab_mem_going_offline_callback(void *arg) | 3437 | static int slab_mem_going_offline_callback(void *arg) |