aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWei Yongjun <yongjun_wei@trendmicro.com.cn>2013-05-10 09:37:14 -0400
committerAlasdair G Kergon <agk@redhat.com>2013-05-10 09:37:14 -0400
commitfa4d683af3693863bec761e2761a07e4c1351f86 (patch)
tree3f3045ed3325ba54673177fb9e4f95892471b252
parentd793e684277124d55c5d2444007e224635821346 (diff)
dm cache: fix error return code in cache_create
Return -ENOMEM if memory allocation fails in cache_create instead of 0 (to avoid NULL pointer dereference). Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Cc: stable@vger.kernel.org Signed-off-by: Alasdair G Kergon <agk@redhat.com>
-rw-r--r--drivers/md/dm-cache-target.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c
index 10744091e6ca..6feaba24fcac 100644
--- a/drivers/md/dm-cache-target.c
+++ b/drivers/md/dm-cache-target.c
@@ -1971,6 +1971,7 @@ static int cache_create(struct cache_args *ca, struct cache **result)
1971 atomic_set(&cache->nr_migrations, 0); 1971 atomic_set(&cache->nr_migrations, 0);
1972 init_waitqueue_head(&cache->migration_wait); 1972 init_waitqueue_head(&cache->migration_wait);
1973 1973
1974 r = -ENOMEM;
1974 cache->nr_dirty = 0; 1975 cache->nr_dirty = 0;
1975 cache->dirty_bitset = alloc_bitset(from_cblock(cache->cache_size)); 1976 cache->dirty_bitset = alloc_bitset(from_cblock(cache->cache_size));
1976 if (!cache->dirty_bitset) { 1977 if (!cache->dirty_bitset) {