aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/dm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/dm.c')
-rw-r--r--drivers/md/dm.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index ace998ce59f6..a78caad29996 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -1146,7 +1146,7 @@ static void unlock_fs(struct mapped_device *md);
1146 1146
1147static void free_dev(struct mapped_device *md) 1147static void free_dev(struct mapped_device *md)
1148{ 1148{
1149 int minor = md->disk->first_minor; 1149 int minor = MINOR(disk_devt(md->disk));
1150 1150
1151 if (md->suspended_bdev) { 1151 if (md->suspended_bdev) {
1152 unlock_fs(md); 1152 unlock_fs(md);
@@ -1267,7 +1267,7 @@ static struct mapped_device *dm_find_md(dev_t dev)
1267 1267
1268 md = idr_find(&_minor_idr, minor); 1268 md = idr_find(&_minor_idr, minor);
1269 if (md && (md == MINOR_ALLOCED || 1269 if (md && (md == MINOR_ALLOCED ||
1270 (dm_disk(md)->first_minor != minor) || 1270 (MINOR(disk_devt(dm_disk(md))) != minor) ||
1271 test_bit(DMF_FREEING, &md->flags))) { 1271 test_bit(DMF_FREEING, &md->flags))) {
1272 md = NULL; 1272 md = NULL;
1273 goto out; 1273 goto out;
@@ -1318,7 +1318,8 @@ void dm_put(struct mapped_device *md)
1318 1318
1319 if (atomic_dec_and_lock(&md->holders, &_minor_lock)) { 1319 if (atomic_dec_and_lock(&md->holders, &_minor_lock)) {
1320 map = dm_get_table(md); 1320 map = dm_get_table(md);
1321 idr_replace(&_minor_idr, MINOR_ALLOCED, dm_disk(md)->first_minor); 1321 idr_replace(&_minor_idr, MINOR_ALLOCED,
1322 MINOR(disk_devt(dm_disk(md))));
1322 set_bit(DMF_FREEING, &md->flags); 1323 set_bit(DMF_FREEING, &md->flags);
1323 spin_unlock(&_minor_lock); 1324 spin_unlock(&_minor_lock);
1324 if (!dm_suspended(md)) { 1325 if (!dm_suspended(md)) {