diff options
author | Heinz Mauelshagen <heinzm@redhat.com> | 2013-03-20 17:21:26 +0000 |
---|---|---|
committer | Alasdair G Kergon <agk@redhat.com> | 2013-03-20 17:21:26 +0000 |
commit | 617a0b89da4898d4cc990c9eb4bc9c0591c538a5 (patch) | |
tree | 3629d4f8f456dd630c5293da6b3e5b3a0c8d4b75 /drivers/md | |
parent | 414dd67d50a6b9a11af23bbb68e8fae13d726c8b (diff) |
dm cache: detect cache_create failure
Return error if cache_create() fails.
A missing return check made cache_ctr continue even after an error in
cache_create() resulting in the cache object being destroyed. So a
simple failure like an odd number of cache policy config value arguments
would result in an oops.
Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/dm-cache-target.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c index 5ad227f0cea3..76cc910557f0 100644 --- a/drivers/md/dm-cache-target.c +++ b/drivers/md/dm-cache-target.c @@ -2009,6 +2009,8 @@ static int cache_ctr(struct dm_target *ti, unsigned argc, char **argv) goto out; r = cache_create(ca, &cache); + if (r) + goto out; r = copy_ctr_args(cache, argc - 3, (const char **)argv + 3); if (r) { |