[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1463411798-2597-1-git-send-email-chao@kernel.org>
Date: Mon, 16 May 2016 23:16:38 +0800
From: Chao Yu <chao@...nel.org>
To: tytso@....edu, jack@...e.cz
Cc: viro@...iv.linux.org.uk, linux-ext4@...r.kernel.org,
linux-fsdevel@...r.kernel.org, Chao Yu <yuchao0@...wei.com>
Subject: [PATCH] mbcache: fix to detect failure of register_shrinker
From: Chao Yu <yuchao0@...wei.com>
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 <yuchao0@...wei.com>
---
fs/mbcache.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/fs/mbcache.c b/fs/mbcache.c
index eccda3a..c5bd19f 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);
--
2.7.2
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists