diff options
| -rw-r--r-- | fs/block_dev.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index db831efbdbbd..7c727523bc54 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
| @@ -1135,12 +1135,15 @@ static int blkdev_open(struct inode * inode, struct file * filp) | |||
| 1135 | if (res) | 1135 | if (res) |
| 1136 | return res; | 1136 | return res; |
| 1137 | 1137 | ||
| 1138 | if (!(filp->f_mode & FMODE_EXCL)) | 1138 | if (filp->f_mode & FMODE_EXCL) { |
| 1139 | return 0; | 1139 | res = bd_claim(bdev, filp); |
| 1140 | if (res) | ||
| 1141 | goto out_blkdev_put; | ||
| 1142 | } | ||
| 1140 | 1143 | ||
| 1141 | if (!(res = bd_claim(bdev, filp))) | 1144 | return 0; |
| 1142 | return 0; | ||
| 1143 | 1145 | ||
| 1146 | out_blkdev_put: | ||
| 1144 | blkdev_put(bdev, filp->f_mode); | 1147 | blkdev_put(bdev, filp->f_mode); |
| 1145 | return res; | 1148 | return res; |
| 1146 | } | 1149 | } |
