linux-stable/arch
Christian Göttsche 6140be90ec fs/xattr: add *at family syscalls
Add the four syscalls setxattrat(), getxattrat(), listxattrat() and
removexattrat().  Those can be used to operate on extended attributes,
especially security related ones, either relative to a pinned directory
or on a file descriptor without read access, avoiding a
/proc/<pid>/fd/<fd> detour, requiring a mounted procfs.

One use case will be setfiles(8) setting SELinux file contexts
("security.selinux") without race conditions and without a file
descriptor opened with read access requiring SELinux read permission.

Use the do_{name}at() pattern from fs/open.c.

Pass the value of the extended attribute, its length, and for
setxattrat(2) the command (XATTR_CREATE or XATTR_REPLACE) via an added
struct xattr_args to not exceed six syscall arguments and not
merging the AT_* and XATTR_* flags.

[AV: fixes by Christian Brauner folded in, the entire thing rebased on
top of {filename,file}_...xattr() primitives, treatment of empty
pathnames regularized.  As the result, AT_EMPTY_PATH+NULL handling
is cheap, so f...(2) can use it]

Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
Link: https://lore.kernel.org/r/20240426162042.191916-1-cgoettsche@seltendoof.de
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Christian Brauner <brauner@kernel.org>
CC: x86@kernel.org
CC: linux-alpha@vger.kernel.org
CC: linux-kernel@vger.kernel.org
CC: linux-arm-kernel@lists.infradead.org
CC: linux-ia64@vger.kernel.org
CC: linux-m68k@lists.linux-m68k.org
CC: linux-mips@vger.kernel.org
CC: linux-parisc@vger.kernel.org
CC: linuxppc-dev@lists.ozlabs.org
CC: linux-s390@vger.kernel.org
CC: linux-sh@vger.kernel.org
CC: sparclinux@vger.kernel.org
CC: linux-fsdevel@vger.kernel.org
CC: audit@vger.kernel.org
CC: linux-arch@vger.kernel.org
CC: linux-api@vger.kernel.org
CC: linux-security-module@vger.kernel.org
CC: selinux@vger.kernel.org
[brauner: slight tweaks]
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2024-11-06 12:59:44 -05:00
..
alpha fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
arc Kbuild updates for v6.12 2024-09-24 13:02:06 -07:00
arm fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
arm64 fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
csky mm: make arch_get_unmapped_area() take vm_flags by default 2024-09-09 16:39:13 -07:00
hexagon hexagon: vdso: Fix build failure 2024-09-23 08:17:50 -07:00
loongarch x86: 2024-09-28 09:20:14 -07:00
m68k fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
microblaze fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
mips fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
nios2 mm: remove legacy install_special_mapping() code 2024-09-01 20:26:13 -07:00
openrisc openrisc: convert to generic syscall table 2024-07-10 14:23:38 +02:00
parisc fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
powerpc fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
riscv x86: 2024-09-28 09:20:14 -07:00
s390 fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
sh fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
sparc fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
um This pull request contains the following changes for UML: 2024-09-27 12:48:48 -07:00
x86 fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
xtensa fs/xattr: add *at family syscalls 2024-11-06 12:59:44 -05:00
.gitignore
Kconfig Rust changes for v6.12 2024-09-25 10:25:40 -07:00