Commit 5220ea1e authored by majianpeng's avatar majianpeng Committed by NeilBrown

md/raid1: If md_integrity_register() failed,run() must free the mem

Signed-off-by: default avatarmajianpeng <majianpeng@gmail.com>
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent 0366ef84
...@@ -2636,11 +2636,13 @@ static struct r1conf *setup_conf(struct mddev *mddev) ...@@ -2636,11 +2636,13 @@ static struct r1conf *setup_conf(struct mddev *mddev)
return ERR_PTR(err); return ERR_PTR(err);
} }
static int stop(struct mddev *mddev);
static int run(struct mddev *mddev) static int run(struct mddev *mddev)
{ {
struct r1conf *conf; struct r1conf *conf;
int i; int i;
struct md_rdev *rdev; struct md_rdev *rdev;
int ret;
if (mddev->level != 1) { if (mddev->level != 1) {
printk(KERN_ERR "md/raid1:%s: raid level not set to mirroring (%d)\n", printk(KERN_ERR "md/raid1:%s: raid level not set to mirroring (%d)\n",
...@@ -2705,7 +2707,11 @@ static int run(struct mddev *mddev) ...@@ -2705,7 +2707,11 @@ static int run(struct mddev *mddev)
mddev->queue->backing_dev_info.congested_data = mddev; mddev->queue->backing_dev_info.congested_data = mddev;
blk_queue_merge_bvec(mddev->queue, raid1_mergeable_bvec); blk_queue_merge_bvec(mddev->queue, raid1_mergeable_bvec);
} }
return md_integrity_register(mddev);
ret = md_integrity_register(mddev);
if (ret)
stop(mddev);
return ret;
} }
static int stop(struct mddev *mddev) static int stop(struct mddev *mddev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment