Btrfs: do not delete a subvolume which is in a R/O subvolume
Step to reproduce: # mkfs.btrfs <disk> # mount <disk> <mnt> # btrfs sub create <mnt>/subv0 # btrfs sub snap <mnt> <mnt>/subv0/snap0 # change <mnt>/subv0 from R/W to R/O # btrfs sub del <mnt>/subv0/snap0 We deleted the snapshot successfully. I think we should not be able to delete the snapshot since the parent subvolume is R/O. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
This commit is contained in:
parent
d86e56cf7d
commit
5c39da5b6c
1 changed files with 5 additions and 5 deletions
|
@ -2095,13 +2095,13 @@ static noinline int btrfs_ioctl_snap_destroy(struct file *file,
|
|||
err = inode_permission(inode, MAY_WRITE | MAY_EXEC);
|
||||
if (err)
|
||||
goto out_dput;
|
||||
|
||||
/* check if subvolume may be deleted by a non-root user */
|
||||
err = btrfs_may_delete(dir, dentry, 1);
|
||||
if (err)
|
||||
goto out_dput;
|
||||
}
|
||||
|
||||
/* check if subvolume may be deleted by a user */
|
||||
err = btrfs_may_delete(dir, dentry, 1);
|
||||
if (err)
|
||||
goto out_dput;
|
||||
|
||||
if (btrfs_ino(inode) != BTRFS_FIRST_FREE_OBJECTID) {
|
||||
err = -EINVAL;
|
||||
goto out_dput;
|
||||
|
|
Loading…
Reference in a new issue