]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
landlock: Multithreading support for landlock_restrict_self()
authorGünther Noack <gnoack@google.com>
Thu, 27 Nov 2025 11:51:34 +0000 (12:51 +0100)
committerMickaël Salaün <mic@digikod.net>
Fri, 6 Feb 2026 16:54:37 +0000 (17:54 +0100)
commit42fc7e6543f6d17d2cf9ed3e5021f103a3d11182
treec5c0303fa0f7635e0a7d94c69ef67962af61f456
parent24d479d26b25bce5faea3ddd9fa8f3a6c3129ea7
landlock: Multithreading support for landlock_restrict_self()

Introduce the LANDLOCK_RESTRICT_SELF_TSYNC flag.  With this flag, a
given Landlock ruleset is applied to all threads of the calling
process, instead of only the current one.

Without this flag, multithreaded userspace programs currently resort
to using the nptl(7)/libpsx hack for multithreaded policy enforcement,
which is also used by libcap and for setuid(2).  Using this
userspace-based scheme, the threads of a process enforce the same
Landlock policy, but the resulting Landlock domains are still
separate.  The domains being separate causes multiple problems:

* When using Landlock's "scoped" access rights, the domain identity is
  used to determine whether an operation is permitted.  As a result,
  when using LANLDOCK_SCOPE_SIGNAL, signaling between sibling threads
  stops working.  This is a problem for programming languages and
  frameworks which are inherently multithreaded (e.g. Go).

* In audit logging, the domains of separate threads in a process will
  get logged with different domain IDs, even when they are based on
  the same ruleset FD, which might confuse users.

Cc: Andrew G. Morgan <morgan@kernel.org>
Cc: John Johansen <john.johansen@canonical.com>
Cc: Paul Moore <paul@paul-moore.com>
Suggested-by: Jann Horn <jannh@google.com>
Signed-off-by: Günther Noack <gnoack@google.com>
Link: https://lore.kernel.org/r/20251127115136.3064948-2-gnoack@google.com
[mic: Fix restrict_self_flags test, clean up Makefile, allign comments,
reduce local variable scope, add missing includes]
Closes: https://github.com/landlock-lsm/linux/issues/2
Signed-off-by: Mickaël Salaün <mic@digikod.net>
include/uapi/linux/landlock.h
security/landlock/Makefile
security/landlock/cred.h
security/landlock/limits.h
security/landlock/syscalls.c
security/landlock/tsync.c [new file with mode: 0644]
security/landlock/tsync.h [new file with mode: 0644]
tools/testing/selftests/landlock/base_test.c