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); |
