summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/block/blkpg.c2
-rw-r--r--drivers/block/ll_rw_blk.c7
-rw-r--r--drivers/block/loop.c2
3 files changed, 8 insertions, 3 deletions
diff --git a/drivers/block/blkpg.c b/drivers/block/blkpg.c
index d4826ab849f8..37e244777963 100644
--- a/drivers/block/blkpg.c
+++ b/drivers/block/blkpg.c
@@ -236,7 +236,7 @@ int blk_ioctl(struct block_device *bdev, unsigned int cmd, unsigned long arg)
set_device_ro(dev, intval);
return 0;
case BLKROGET:
- intval = (is_read_only(dev) != 0);
+ intval = (bdev_read_only(bdev) != 0);
return put_user(intval, (int *)(arg));
case BLKRASET:
diff --git a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c
index f499db21deed..0f00a8c163af 100644
--- a/drivers/block/ll_rw_blk.c
+++ b/drivers/block/ll_rw_blk.c
@@ -1196,6 +1196,11 @@ int is_read_only(kdev_t dev)
return ro_bits[major][minor >> 5] & (1 << (minor & 31));
}
+int bdev_read_only(struct block_device *bdev)
+{
+ return bdev && is_read_only(to_kdev_t(bdev->bd_dev));
+}
+
void set_device_ro(kdev_t dev,int flag)
{
int minor,major;
@@ -1765,7 +1770,7 @@ void ll_rw_block(int rw, int nr, struct buffer_head * bhs[])
}
}
- if ((rw & WRITE) && is_read_only(to_kdev_t(bhs[0]->b_bdev->bd_dev))) {
+ if ((rw & WRITE) && bdev_read_only(bhs[0]->b_bdev)) {
printk(KERN_NOTICE "Can't write to read-only device %s\n",
bdevname(bhs[0]->b_bdev));
goto sorry;
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 66df618d318b..69f8d07aa54d 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -679,7 +679,7 @@ static int loop_set_fd(struct loop_device *lo, struct file *lo_file,
get_file(file);
- if (IS_RDONLY (inode) || is_read_only(to_kdev_t(lo_device->bd_dev))
+ if (IS_RDONLY (inode) || bdev_read_only(lo_device)
|| !(lo_file->f_mode & FMODE_WRITE))
lo_flags |= LO_FLAGS_READ_ONLY;