diff --git a/[refs] b/[refs] index 4fa72ac0a6f1..82f86432b365 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 45048d0961cdbf7ddfba906797ad8cb42489e070 +refs/heads/master: 6af3a56e1dd4d95836a47214e5c60d5b749a5501 diff --git a/trunk/block/ioctl.c b/trunk/block/ioctl.c index bd214cb37f2b..14b7f2c10662 100644 --- a/trunk/block/ioctl.c +++ b/trunk/block/ioctl.c @@ -343,10 +343,11 @@ int blkdev_ioctl(struct inode *inode, struct file *file, unsigned cmd, return -EINVAL; if (get_user(n, (int __user *) arg)) return -EFAULT; - if (bd_claim(bdev, file) < 0) + if (!(mode & FMODE_EXCL) && bd_claim(bdev, &bdev) < 0) return -EBUSY; ret = set_blocksize(bdev, n); - bd_release(bdev); + if (!(mode & FMODE_EXCL)) + bd_release(bdev); return ret; case BLKPG: lock_kernel();