mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
rbd: disallow read-write partitions on images mapped read-only
If an image is mapped read-only, don't allow setting its partition(s) to read-write via BLKROSET: with the previous patch all writes to such images are failed anyway. If an image is mapped read-write, its partition(s) can be set to read-only (and back to read-write) as before. Note that at the rbd level the image will remain writeable: anything sent down by the block layer will be executed, including any write from internal kernel users. Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Jason Dillaman <dillaman@redhat.com> Reviewed-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
This commit is contained in:
parent
b948ad7897
commit
c1b6205730
@ -706,9 +706,16 @@ static int rbd_ioctl_set_ro(struct rbd_device *rbd_dev, unsigned long arg)
|
||||
if (get_user(ro, (int __user *)arg))
|
||||
return -EFAULT;
|
||||
|
||||
/* Snapshots can't be marked read-write */
|
||||
if (rbd_is_snap(rbd_dev) && !ro)
|
||||
return -EROFS;
|
||||
/*
|
||||
* Both images mapped read-only and snapshots can't be marked
|
||||
* read-write.
|
||||
*/
|
||||
if (!ro) {
|
||||
if (rbd_is_ro(rbd_dev))
|
||||
return -EROFS;
|
||||
|
||||
rbd_assert(!rbd_is_snap(rbd_dev));
|
||||
}
|
||||
|
||||
/* Let blkdev_roset() handle it */
|
||||
return -ENOTTY;
|
||||
|
Loading…
Reference in New Issue
Block a user