diff options
Diffstat (limited to 'drivers/md/md.c')
| -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)  		else  			pr_warn("md: personality for level %s is not loaded!\n",  				mddev->clevel); -		return -EINVAL; +		err = -EINVAL; +		goto abort;  	}  	spin_unlock(&pers_lock);  	if (mddev->level != pers->level) { @@ -5560,7 +5561,8 @@ int md_run(struct mddev *mddev)  	    pers->start_reshape == NULL) {  		/* This personality cannot handle reshaping... */  		module_put(pers->owner); -		return -EINVAL; +		err = -EINVAL; +		goto abort;  	}  	if (pers->sync_request) { @@ -5629,7 +5631,7 @@ int md_run(struct mddev *mddev)  		mddev->private = NULL;  		module_put(pers->owner);  		bitmap_destroy(mddev); -		return err; +		goto abort;  	}  	if (mddev->queue) {  		bool nonrot = true;  | 
