]> git.baikalelectronics.ru Git - kernel.git/commit
btrfs: check if root is readonly while setting security xattr
authorGoldwyn Rodrigues <rgoldwyn@suse.de>
Tue, 16 Aug 2022 21:42:56 +0000 (16:42 -0500)
committerDavid Sterba <dsterba@suse.com>
Mon, 22 Aug 2022 16:06:30 +0000 (18:06 +0200)
commitbe3b6e9aea3ab36d952ff98c1a3f2211e411faba
tree6ae28c6f1810bced5cb8c9cb7f563fb4f2809b21
parent4c4c9096e896a1008394fad45e72c51249057fc3
btrfs: check if root is readonly while setting security xattr

For a filesystem which has btrfs read-only property set to true, all
write operations including xattr should be denied. However, security
xattr can still be changed even if btrfs ro property is true.

This happens because xattr_permission() does not have any restrictions
on security.*, system.*  and in some cases trusted.* from VFS and
the decision is left to the underlying filesystem. See comments in
xattr_permission() for more details.

This patch checks if the root is read-only before performing the set
xattr operation.

Testcase:

  DEV=/dev/vdb
  MNT=/mnt

  mkfs.btrfs -f $DEV
  mount $DEV $MNT
  echo "file one" > $MNT/f1

  setfattr -n "security.one" -v 2 $MNT/f1
  btrfs property set /mnt ro true

  setfattr -n "security.one" -v 1 $MNT/f1

  umount $MNT

CC: stable@vger.kernel.org # 4.9+
Reviewed-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/xattr.c