[PATCH v2 00/16] fchroot: add fchroot() testing suite
Andrea Cervesato <[email protected]>
| Newsgroups | gmane.linux.ltp |
|---|---|
| Message-ID | <[email protected]> |
fchroot() is a new syscall introduced in the Linux v7.3 development cycle together with failfs, a kernel internal filesystem where every operation fails with EOPNOTSUPP. The syscall is the fd-based counterpart of chroot(2): it moves the process root to the directory referenced by a file descriptor, or to the failfs root via the FD_FAILFS_ROOT sentinel. The series first updates the architecture syscall number tables and adds lapi fallback definitions for the new fd sentinels, then adds 13 tests covering: - the basic directory fd use case and the argument error paths (EINVAL, EBADF, ENOTDIR) - the permission checks, both execute permission and CAP_SYS_CHROOT - entering failfs as root: EOPNOTSUPP on every absolute lookup, unreachable working directory, root that can not be referenced or pinned, path walks anchored at file descriptors, execve blocked, fork inheritance and the setns() escape - the unprivileged entry rules: no_new_privs, shared fs_struct and the already chrooted case fchroot() is not part of any released kernel yet, so the tests are added to runtest/staging and each patch carries the [STAGING] prefix as required by the LTP ground rules. The testing suite creation has been assisted by GLM 5.3. Signed-off-by: Andrea Cervesato <andrea.cervesato-IBi9RG/[email protected]> --- Changes in v2: - make description more readable - invert fork() logic for the main test process - fix the issues found by the agent - Link to v1: https://lore.kernel.org/20260819-fchroot-v1-0-2dc2c3c3cf29-IBi9RG/[email protected] To: Linux Test Project <[email protected]> --- Andrea Cervesato (16): syscalls: add v7.3 syscall numbers syscalls: update outdated syscall entries [STAGING] lapi: fallback fchroot() parameters [STAGING] fchroot01: test fchroot() with a directory fd [STAGING] fchroot02: test fchroot() invalid arguments [STAGING] fchroot03: test fchroot() permission checks [STAGING] fchroot04: test fchroot() into failfs as root [STAGING] fchroot05: test failfs root can not be referenced [STAGING] fchroot06: test path walks under failfs root [STAGING] fchroot07: test execve blocked by failfs root [STAGING] fchroot08: test failfs root fork inheritance [STAGING] fchroot09: test setns escape from failfs root [STAGING] fchroot10: test failfs entry without no_new_privs [STAGING] fchroot11: test failfs entry with no_new_privs [STAGING] fchroot12: test failfs entry with shared fs_struct [STAGING] fchroot13: test failfs entry when chrooted include/lapi/fcntl.h | 13 +++ include/lapi/syscalls/arc.in | 3 + include/lapi/syscalls/arm.in | 4 +- include/lapi/syscalls/arm64.in | 3 + include/lapi/syscalls/i386.in | 4 +- include/lapi/syscalls/loongarch64.in | 3 + include/lapi/syscalls/mips64.in | 5 +- include/lapi/syscalls/mips64n32.in | 5 +- include/lapi/syscalls/mipso32.in | 5 +- include/lapi/syscalls/parisc.in | 4 +- include/lapi/syscalls/powerpc.in | 4 +- include/lapi/syscalls/powerpc64.in | 4 +- include/lapi/syscalls/s390.in | 5 +- include/lapi/syscalls/s390x.in | 5 +- include/lapi/syscalls/sh.in | 4 +- include/lapi/syscalls/sparc.in | 5 +- include/lapi/syscalls/sparc64.in | 5 +- include/lapi/syscalls/x86_64.in | 5 +- runtest/staging | 14 +++ testcases/kernel/syscalls/fchroot/.gitignore | 13 +++ testcases/kernel/syscalls/fchroot/Makefile | 7 ++ testcases/kernel/syscalls/fchroot/fchroot01.c | 59 +++++++++++++ testcases/kernel/syscalls/fchroot/fchroot02.c | 80 ++++++++++++++++++ testcases/kernel/syscalls/fchroot/fchroot03.c | 78 +++++++++++++++++ testcases/kernel/syscalls/fchroot/fchroot04.c | 70 +++++++++++++++ testcases/kernel/syscalls/fchroot/fchroot05.c | 75 +++++++++++++++++ testcases/kernel/syscalls/fchroot/fchroot06.c | 117 ++++++++++++++++++++++++++ testcases/kernel/syscalls/fchroot/fchroot07.c | 72 ++++++++++++++++ testcases/kernel/syscalls/fchroot/fchroot08.c | 69 +++++++++++++++ testcases/kernel/syscalls/fchroot/fchroot09.c | 87 +++++++++++++++++++ testcases/kernel/syscalls/fchroot/fchroot10.c | 50 +++++++++++ testcases/kernel/syscalls/fchroot/fchroot11.c | 70 +++++++++++++++ testcases/kernel/syscalls/fchroot/fchroot12.c | 85 +++++++++++++++++++ testcases/kernel/syscalls/fchroot/fchroot13.c | 63 ++++++++++++++ 34 files changed, 1076 insertions(+), 19 deletions(-) --- base-commit: 567528e2f809c1309802433703c083bd15ab81a8 change-id: 20260819-fchroot-66115fd0d497 Best regards, -- Andrea Cervesato <andrea.cervesato-IBi9RG/[email protected]> -- Mailing list info: https://lists.linux.it/listinfo/ltp