diff options
author | NeilBrown <neilb@suse.de> | 2009-06-30 22:27:21 -0400 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2009-06-30 22:27:21 -0400 |
commit | 1ec22eb2b4a2e1a763106bce36b11c02eaa84e61 (patch) | |
tree | 2aa6e6539342a28263417f6a2f2551d541e9ead9 | |
parent | b8d966efd9a46a9a35beac50cbff6e30565125ef (diff) |
md: fix error path when duplicate name is found on md device creation.
When an md device is created by name (rather than number) we need to
check that the name is not already in use. If this check finds a
duplicate, we return an error without dropping the lock or freeing
the newly create mddev.
This patch fixes that.
Cc: stable@kernel.org
Found-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r-- | drivers/md/md.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 2166af8a7654..58bee2366ea8 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -3862,6 +3862,8 @@ static int md_alloc(dev_t dev, char *name) | |||
3862 | if (mddev2->gendisk && | 3862 | if (mddev2->gendisk && |
3863 | strcmp(mddev2->gendisk->disk_name, name) == 0) { | 3863 | strcmp(mddev2->gendisk->disk_name, name) == 0) { |
3864 | spin_unlock(&all_mddevs_lock); | 3864 | spin_unlock(&all_mddevs_lock); |
3865 | mutex_unlock(&disks_mutex); | ||
3866 | mddev_put(mddev); | ||
3865 | return -EEXIST; | 3867 | return -EEXIST; |
3866 | } | 3868 | } |
3867 | spin_unlock(&all_mddevs_lock); | 3869 | spin_unlock(&all_mddevs_lock); |