Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c39da5b authored by Miao Xie's avatar Miao Xie Committed by Josef Bacik
Browse files

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: default avatarMiao Xie <miaox@cn.fujitsu.com>
parent d86e56cf
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -2095,12 +2095,12 @@ 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 */
	/* 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;