|
@@ -72,7 +72,7 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg __user
|
|
bdevp = bdget_disk(disk, part);
|
|
bdevp = bdget_disk(disk, part);
|
|
if (!bdevp)
|
|
if (!bdevp)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
- mutex_lock(&bdevp->bd_mutex);
|
|
|
|
|
|
+ mutex_lock_nested(&bdevp->bd_mutex, BD_MUTEX_PARTITION);
|
|
if (bdevp->bd_openers) {
|
|
if (bdevp->bd_openers) {
|
|
mutex_unlock(&bdevp->bd_mutex);
|
|
mutex_unlock(&bdevp->bd_mutex);
|
|
bdput(bdevp);
|
|
bdput(bdevp);
|
|
@@ -82,7 +82,7 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg __user
|
|
fsync_bdev(bdevp);
|
|
fsync_bdev(bdevp);
|
|
invalidate_bdev(bdevp, 0);
|
|
invalidate_bdev(bdevp, 0);
|
|
|
|
|
|
- mutex_lock(&bdev->bd_mutex);
|
|
|
|
|
|
+ mutex_lock_nested(&bdev->bd_mutex, BD_MUTEX_WHOLE);
|
|
delete_partition(disk, part);
|
|
delete_partition(disk, part);
|
|
mutex_unlock(&bdev->bd_mutex);
|
|
mutex_unlock(&bdev->bd_mutex);
|
|
mutex_unlock(&bdevp->bd_mutex);
|
|
mutex_unlock(&bdevp->bd_mutex);
|