diff options
| author | Tejun Heo <tj@kernel.org> | 2011-02-21 03:43:56 -0500 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2011-02-21 03:43:56 -0500 |
| commit | 43d133c18b44e7d82d82ef0dcc2bddd55d5dfe81 (patch) | |
| tree | 8de75c837b55874cc8a81a29bdedbc62668d4481 /fs/block_dev.c | |
| parent | 4149efb22da66e326fc48baf80d628834509f7f0 (diff) | |
| parent | 6f576d57f1fa0d6026b495d8746d56d949989161 (diff) | |
Merge branch 'master' into for-2.6.39
Diffstat (limited to 'fs/block_dev.c')
| -rw-r--r-- | fs/block_dev.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index 333a7bb4cb9..4fb8a343153 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
| @@ -1215,12 +1215,6 @@ int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder) | |||
| 1215 | 1215 | ||
| 1216 | res = __blkdev_get(bdev, mode, 0); | 1216 | res = __blkdev_get(bdev, mode, 0); |
| 1217 | 1217 | ||
| 1218 | /* __blkdev_get() may alter read only status, check it afterwards */ | ||
| 1219 | if (!res && (mode & FMODE_WRITE) && bdev_read_only(bdev)) { | ||
| 1220 | __blkdev_put(bdev, mode, 0); | ||
| 1221 | res = -EACCES; | ||
| 1222 | } | ||
| 1223 | |||
| 1224 | if (whole) { | 1218 | if (whole) { |
| 1225 | /* finish claiming */ | 1219 | /* finish claiming */ |
| 1226 | mutex_lock(&bdev->bd_mutex); | 1220 | mutex_lock(&bdev->bd_mutex); |
| @@ -1298,6 +1292,11 @@ struct block_device *blkdev_get_by_path(const char *path, fmode_t mode, | |||
| 1298 | if (err) | 1292 | if (err) |
| 1299 | return ERR_PTR(err); | 1293 | return ERR_PTR(err); |
| 1300 | 1294 | ||
| 1295 | if ((mode & FMODE_WRITE) && bdev_read_only(bdev)) { | ||
| 1296 | blkdev_put(bdev, mode); | ||
| 1297 | return ERR_PTR(-EACCES); | ||
| 1298 | } | ||
| 1299 | |||
| 1301 | return bdev; | 1300 | return bdev; |
| 1302 | } | 1301 | } |
| 1303 | EXPORT_SYMBOL(blkdev_get_by_path); | 1302 | EXPORT_SYMBOL(blkdev_get_by_path); |
