diff options
author | Shaohua Li <shli@fb.com> | 2018-06-13 11:39:49 -0400 |
---|---|---|
committer | Shaohua Li <shli@fb.com> | 2018-06-18 12:46:13 -0400 |
commit | bfc9dfdcb6e9493de5d4fe0d3ed3ce57672f8d07 (patch) | |
tree | 09026d6c62405a6697b4d2dd6198168ca3c972fb | |
parent | 9ffc59d57228d74809700be6f7ecb1db10292f05 (diff) |
MD: cleanup resources in failure
We need destroy the memory pool in failure
Signed-off-by: Shaohua Li <shli@fb.com>
-rw-r--r-- | drivers/md/md.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 29b0cd9ec951..994aed2f9dff 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -5547,7 +5547,8 @@ int md_run(struct mddev *mddev) | |||
5547 | else | 5547 | else |
5548 | pr_warn("md: personality for level %s is not loaded!\n", | 5548 | pr_warn("md: personality for level %s is not loaded!\n", |
5549 | mddev->clevel); | 5549 | mddev->clevel); |
5550 | return -EINVAL; | 5550 | err = -EINVAL; |
5551 | goto abort; | ||
5551 | } | 5552 | } |
5552 | spin_unlock(&pers_lock); | 5553 | spin_unlock(&pers_lock); |
5553 | if (mddev->level != pers->level) { | 5554 | if (mddev->level != pers->level) { |
@@ -5560,7 +5561,8 @@ int md_run(struct mddev *mddev) | |||
5560 | pers->start_reshape == NULL) { | 5561 | pers->start_reshape == NULL) { |
5561 | /* This personality cannot handle reshaping... */ | 5562 | /* This personality cannot handle reshaping... */ |
5562 | module_put(pers->owner); | 5563 | module_put(pers->owner); |
5563 | return -EINVAL; | 5564 | err = -EINVAL; |
5565 | goto abort; | ||
5564 | } | 5566 | } |
5565 | 5567 | ||
5566 | if (pers->sync_request) { | 5568 | if (pers->sync_request) { |
@@ -5629,7 +5631,7 @@ int md_run(struct mddev *mddev) | |||
5629 | mddev->private = NULL; | 5631 | mddev->private = NULL; |
5630 | module_put(pers->owner); | 5632 | module_put(pers->owner); |
5631 | bitmap_destroy(mddev); | 5633 | bitmap_destroy(mddev); |
5632 | return err; | 5634 | goto abort; |
5633 | } | 5635 | } |
5634 | if (mddev->queue) { | 5636 | if (mddev->queue) { |
5635 | bool nonrot = true; | 5637 | bool nonrot = true; |