Linux Test Project
 help / color / mirror / Atom feed
* [LTP] [PATCH v5 00/14] fchroot: add fchroot() testing suite
@ 2026-10-20 10:16 Andrea Cervesato
  2026-10-20 10:16 ` [LTP] [PATCH v5 01/14] lapi: fallback fchroot() parameters Andrea Cervesato
                   ` (14 more replies)
  0 siblings, 15 replies; 24+ messages in thread
From: Andrea Cervesato @ 2026-10-20 10:16 UTC (permalink / raw)
  To: Linux Test Project

fchroot() is a new syscall introduced in Linux v7.3 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 adds lapi fallback definitions for the new fd sentinels and
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

The testing suite creation has been assisted by GLM 5.3.

Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
Changes in v5:
- drop syscall table commits already merged in master
- drop [STAGING] prefix and move runtest entries to runtest/syscalls
- remove redundant exit(0) in forked test processes
- fchroot04, fchroot11: use /dev/zero instead of /etc/passwd
- fchroot06: simplify upwards path construction and use SAFE_STAT()
- fchroot08, fchroot09: drop unnecessary symlink setup and open "/" directly
- fchroot09: clarify setns() escape description
- fchroot11: check unprivileged userns support before testing failfs block
- Link to v4: https://lore.kernel.org/20260831-fchroot-v4-0-57cceb68f927@suse.com

Changes in v4:
- restore fchroot08 commit
- fix descriptions
- improve setup() inside tests
- Link to v3: https://lore.kernel.org/20260828-fchroot-v3-0-656a2b515726@suse.com

Changes in v3:
- remove order specific tests inside the descriptions
- fchroot07: add child
- fix snprintf() possible overflows
- fix tests using TST_EXP_* macros
- use stat(".", ..) where it's needed
- Link to v2: https://lore.kernel.org/20260820-fchroot-v2-0-062ed20957a0@suse.com

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@suse.com

To: Linux Test Project <ltp@lists.linux.it>

---
Andrea Cervesato (14):
      lapi: fallback fchroot() parameters
      fchroot01: test fchroot() with a directory fd
      fchroot02: test fchroot() invalid arguments
      fchroot03: test fchroot() permission checks
      fchroot04: test fchroot() into failfs as root
      fchroot05: test failfs root can not be referenced
      fchroot06: test path walks under failfs root
      fchroot07: test execve blocked by failfs root
      fchroot08: test failfs root fork inheritance
      fchroot09: test setns escape from failfs root
      fchroot10: test failfs entry without no_new_privs
      fchroot11: test failfs entry with no_new_privs
      fchroot12: test failfs entry with shared fs_struct
      fchroot13: test failfs entry when chrooted

 include/lapi/fcntl.h                               |  13 +++
 runtest/syscalls                                   |  14 +++
 testcases/kernel/syscalls/fchroot/.gitignore       |  14 +++
 testcases/kernel/syscalls/fchroot/Makefile         |   7 ++
 testcases/kernel/syscalls/fchroot/fchroot01.c      |  56 ++++++++++
 testcases/kernel/syscalls/fchroot/fchroot02.c      |  75 +++++++++++++
 testcases/kernel/syscalls/fchroot/fchroot03.c      |  70 ++++++++++++
 testcases/kernel/syscalls/fchroot/fchroot04.c      |  67 +++++++++++
 testcases/kernel/syscalls/fchroot/fchroot05.c      |  73 ++++++++++++
 testcases/kernel/syscalls/fchroot/fchroot06.c      | 124 +++++++++++++++++++++
 testcases/kernel/syscalls/fchroot/fchroot07.c      |  58 ++++++++++
 .../kernel/syscalls/fchroot/fchroot07_child.c      |  16 +++
 testcases/kernel/syscalls/fchroot/fchroot08.c      |  52 +++++++++
 testcases/kernel/syscalls/fchroot/fchroot09.c      |  68 +++++++++++
 testcases/kernel/syscalls/fchroot/fchroot10.c      |  52 +++++++++
 testcases/kernel/syscalls/fchroot/fchroot11.c      |  85 ++++++++++++++
 testcases/kernel/syscalls/fchroot/fchroot12.c      |  83 ++++++++++++++
 testcases/kernel/syscalls/fchroot/fchroot13.c      |  61 ++++++++++
 18 files changed, 988 insertions(+)
---
base-commit: 1aae0e4d9d1e2e7818fda773b372cee8fb856de7
change-id: 20260819-fchroot-66115fd0d497

Best regards,
--  
Andrea Cervesato <andrea.cervesato@suse.com>


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2026-10-20 16:14 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-20 10:16 [LTP] [PATCH v5 00/14] fchroot: add fchroot() testing suite Andrea Cervesato
2026-10-20 10:16 ` [LTP] [PATCH v5 01/14] lapi: fallback fchroot() parameters Andrea Cervesato
2026-10-20 12:39   ` Cyril Hrubis
2026-10-20 14:53   ` [LTP] " linuxtestproject.agent
2026-10-20 15:57     ` Andrea Cervesato via ltp
2026-10-20 10:16 ` [LTP] [PATCH v5 02/14] fchroot01: test fchroot() with a directory fd Andrea Cervesato
2026-10-20 10:16 ` [LTP] [PATCH v5 03/14] fchroot02: test fchroot() invalid arguments Andrea Cervesato
2026-10-20 10:16 ` [LTP] [PATCH v5 04/14] fchroot03: test fchroot() permission checks Andrea Cervesato
2026-10-20 10:16 ` [LTP] [PATCH v5 05/14] fchroot04: test fchroot() into failfs as root Andrea Cervesato
2026-10-20 10:16 ` [LTP] [PATCH v5 06/14] fchroot05: test failfs root can not be referenced Andrea Cervesato
2026-10-20 10:16 ` [LTP] [PATCH v5 07/14] fchroot06: test path walks under failfs root Andrea Cervesato
2026-10-20 13:02   ` Cyril Hrubis
2026-10-20 10:16 ` [LTP] [PATCH v5 08/14] fchroot07: test execve blocked by " Andrea Cervesato
2026-10-20 10:16 ` [LTP] [PATCH v5 09/14] fchroot08: test failfs root fork inheritance Andrea Cervesato
2026-10-20 13:05   ` Cyril Hrubis
2026-10-20 10:16 ` [LTP] [PATCH v5 10/14] fchroot09: test setns escape from failfs root Andrea Cervesato
2026-10-20 15:26   ` Cyril Hrubis
2026-10-20 10:16 ` [LTP] [PATCH v5 11/14] fchroot10: test failfs entry without no_new_privs Andrea Cervesato
2026-10-20 10:16 ` [LTP] [PATCH v5 12/14] fchroot11: test failfs entry with no_new_privs Andrea Cervesato
2026-10-20 15:41   ` Cyril Hrubis
2026-10-20 10:16 ` [LTP] [PATCH v5 13/14] fchroot12: test failfs entry with shared fs_struct Andrea Cervesato
2026-10-20 10:16 ` [LTP] [PATCH v5 14/14] fchroot13: test failfs entry when chrooted Andrea Cervesato
2026-10-20 15:44   ` Cyril Hrubis
2026-10-20 16:13 ` [LTP] [PATCH v5 00/14] fchroot: add fchroot() testing suite Andrea Cervesato via ltp

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox