diff options
-rw-r--r-- | drivers/md/dm.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 11f4ffedd646..372369b1cc20 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c | |||
@@ -924,7 +924,7 @@ static void free_minor(int minor) | |||
924 | /* | 924 | /* |
925 | * See if the device with a specific minor # is free. | 925 | * See if the device with a specific minor # is free. |
926 | */ | 926 | */ |
927 | static int specific_minor(struct mapped_device *md, int minor) | 927 | static int specific_minor(int minor) |
928 | { | 928 | { |
929 | int r, m; | 929 | int r, m; |
930 | 930 | ||
@@ -957,7 +957,7 @@ out: | |||
957 | return r; | 957 | return r; |
958 | } | 958 | } |
959 | 959 | ||
960 | static int next_free_minor(struct mapped_device *md, int *minor) | 960 | static int next_free_minor(int *minor) |
961 | { | 961 | { |
962 | int r, m; | 962 | int r, m; |
963 | 963 | ||
@@ -968,9 +968,8 @@ static int next_free_minor(struct mapped_device *md, int *minor) | |||
968 | spin_lock(&_minor_lock); | 968 | spin_lock(&_minor_lock); |
969 | 969 | ||
970 | r = idr_get_new(&_minor_idr, MINOR_ALLOCED, &m); | 970 | r = idr_get_new(&_minor_idr, MINOR_ALLOCED, &m); |
971 | if (r) { | 971 | if (r) |
972 | goto out; | 972 | goto out; |
973 | } | ||
974 | 973 | ||
975 | if (m >= (1 << MINORBITS)) { | 974 | if (m >= (1 << MINORBITS)) { |
976 | idr_remove(&_minor_idr, m); | 975 | idr_remove(&_minor_idr, m); |
@@ -993,7 +992,7 @@ static struct block_device_operations dm_blk_dops; | |||
993 | static struct mapped_device *alloc_dev(int minor) | 992 | static struct mapped_device *alloc_dev(int minor) |
994 | { | 993 | { |
995 | int r; | 994 | int r; |
996 | struct mapped_device *md = kmalloc(sizeof(*md), GFP_KERNEL); | 995 | struct mapped_device *md = kzalloc(sizeof(*md), GFP_KERNEL); |
997 | void *old_md; | 996 | void *old_md; |
998 | 997 | ||
999 | if (!md) { | 998 | if (!md) { |
@@ -1006,13 +1005,12 @@ static struct mapped_device *alloc_dev(int minor) | |||
1006 | 1005 | ||
1007 | /* get a minor number for the dev */ | 1006 | /* get a minor number for the dev */ |
1008 | if (minor == DM_ANY_MINOR) | 1007 | if (minor == DM_ANY_MINOR) |
1009 | r = next_free_minor(md, &minor); | 1008 | r = next_free_minor(&minor); |
1010 | else | 1009 | else |
1011 | r = specific_minor(md, minor); | 1010 | r = specific_minor(minor); |
1012 | if (r < 0) | 1011 | if (r < 0) |
1013 | goto bad_minor; | 1012 | goto bad_minor; |
1014 | 1013 | ||
1015 | memset(md, 0, sizeof(*md)); | ||
1016 | init_rwsem(&md->io_lock); | 1014 | init_rwsem(&md->io_lock); |
1017 | mutex_init(&md->suspend_lock); | 1015 | mutex_init(&md->suspend_lock); |
1018 | spin_lock_init(&md->pushback_lock); | 1016 | spin_lock_init(&md->pushback_lock); |