]> git.ipfire.org Git - thirdparty/linux.git/commit
xattr: simple_xattr_set() return old_xattr to be freed
authorHugh Dickins <hughd@google.com>
Wed, 9 Aug 2023 04:30:59 +0000 (21:30 -0700)
committerChristian Brauner <brauner@kernel.org>
Wed, 9 Aug 2023 07:15:51 +0000 (09:15 +0200)
commit5de75970c9fd7220e394b76e6d20fbafa1369b5a
treeeb0b3a67a96b975840c0600a70cbbf4dab39d0fc
parent0200679fc7953177941e41c2a4241d0b6c2c5de8
xattr: simple_xattr_set() return old_xattr to be freed

tmpfs wants to support limited user extended attributes, but kernfs
(or cgroupfs, the only kernfs with KERNFS_ROOT_SUPPORT_USER_XATTR)
already supports user extended attributes through simple xattrs: but
limited by a policy (128KiB per inode) too liberal to be used on tmpfs.

To allow a different limiting policy for tmpfs, without affecting the
policy for kernfs, change simple_xattr_set() to return the replaced or
removed xattr (if any), leaving the caller to update their accounting
then free the xattr (by simple_xattr_free(), renamed from the static
free_simple_xattr()).

Signed-off-by: Hugh Dickins <hughd@google.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Christian Brauner <brauner@kernel.org>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Message-Id: <158c6585-2aa7-d4aa-90ff-f7c3f8fe407c@google.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/kernfs/inode.c
fs/xattr.c
include/linux/xattr.h
mm/shmem.c