diff --git a/[refs] b/[refs] index 3e718d1f6412..66ac56e63cc3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1c925604e1038c7c65b91a92d14dc972b3a70a97 +refs/heads/master: ebbefc011e56bd85b4745d01e5b8d7d05d95ed5d diff --git a/trunk/fs/block_dev.c b/trunk/fs/block_dev.c index db831efbdbbd..7c727523bc54 100644 --- a/trunk/fs/block_dev.c +++ b/trunk/fs/block_dev.c @@ -1135,12 +1135,15 @@ static int blkdev_open(struct inode * inode, struct file * filp) if (res) return res; - if (!(filp->f_mode & FMODE_EXCL)) - return 0; + if (filp->f_mode & FMODE_EXCL) { + res = bd_claim(bdev, filp); + if (res) + goto out_blkdev_put; + } - if (!(res = bd_claim(bdev, filp))) - return 0; + return 0; + out_blkdev_put: blkdev_put(bdev, filp->f_mode); return res; }