X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=block%2Fioctl.c;h=1124cd297263571d63371ca8ed33f8c361b74e06;hb=efe8dc556cd0f22e04c453188ffbc408b492eb82;hp=9049d460fa890fd45e3e31c1aa8ca9ed080e9f81;hpb=e0985f27ddc3cd49c56fc3a76ec4ae3a594315d0;p=mv-sheeva.git diff --git a/block/ioctl.c b/block/ioctl.c index 9049d460fa8..1124cd29726 100644 --- a/block/ioctl.c +++ b/block/ioctl.c @@ -294,9 +294,11 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd, return -EINVAL; if (get_user(n, (int __user *) arg)) return -EFAULT; - if (!(mode & FMODE_EXCL) && - blkdev_get(bdev, mode | FMODE_EXCL, &bdev) < 0) - return -EBUSY; + if (!(mode & FMODE_EXCL)) { + bdgrab(bdev); + if (blkdev_get(bdev, mode | FMODE_EXCL, &bdev) < 0) + return -EBUSY; + } ret = set_blocksize(bdev, n); if (!(mode & FMODE_EXCL)) blkdev_put(bdev, mode | FMODE_EXCL);