From 8913f343cdb568222c95afe3cad78aee1a4df56b Mon Sep 17 00:00:00 2001 From: Chao Yu Date: Wed, 31 Aug 2016 11:44:36 -0400 Subject: mbcache: fix to detect failure of register_shrinker register_shrinker in mb_cache_create may fail due to no memory. This patch fixes to do the check of return value of register_shrinker and handle the error case, otherwise mb_cache_create may return with no error, but losing the inner shrinker. Signed-off-by: Chao Yu Reviewed-by: Jan Kara Signed-off-by: Theodore Ts'o --- fs/mbcache.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'fs/mbcache.c') diff --git a/fs/mbcache.c b/fs/mbcache.c index eccda3a02de6..c5bd19ffa326 100644 --- a/fs/mbcache.c +++ b/fs/mbcache.c @@ -366,7 +366,11 @@ struct mb_cache *mb_cache_create(int bucket_bits) cache->c_shrink.count_objects = mb_cache_count; cache->c_shrink.scan_objects = mb_cache_scan; cache->c_shrink.seeks = DEFAULT_SEEKS; - register_shrinker(&cache->c_shrink); + if (register_shrinker(&cache->c_shrink)) { + kfree(cache->c_hash); + kfree(cache); + goto err_out; + } INIT_WORK(&cache->c_shrink_work, mb_cache_shrink_worker); -- cgit v1.2.3