summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorHeinz Mauelshagen <heinzm@redhat.com>2013-03-20 17:21:26 (GMT)
committerAlasdair G Kergon <agk@redhat.com>2013-03-20 17:21:26 (GMT)
commitb978440b8db901aba0c4cd38c7c841c9b5cd9a7e (patch)
tree928f481942043a9a7ee0546f2388a18db14d1b9c /drivers
parent617a0b89da4898d4cc990c9eb4bc9c0591c538a5 (diff)
downloadlinux-fsl-qoriq-b978440b8db901aba0c4cd38c7c841c9b5cd9a7e.tar.xz
dm cache: avoid calling policy destructor twice on error
If the cache policy's config values are not able to be set we must set the policy to NULL after destroying it in create_cache_policy() so we don't attempt to destroy it a second time later. 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')
-rw-r--r--drivers/md/dm-cache-target.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c
index 76cc910..79ac860 100644
--- a/drivers/md/dm-cache-target.c
+++ b/drivers/md/dm-cache-target.c
@@ -1763,8 +1763,11 @@ static int create_cache_policy(struct cache *cache, struct cache_args *ca,
}
r = set_config_values(cache->policy, ca->policy_argc, ca->policy_argv);
- if (r)
+ if (r) {
+ *error = "Error setting cache policy's config values";
dm_cache_policy_destroy(cache->policy);
+ cache->policy = NULL;
+ }
return r;
}