Thread (45 messages) 45 messages, 7 authors, 2025-06-04

Re: [PATCH bpf-next 3/4] bpf: Introduce path iterator

From: Christian Brauner <brauner@kernel.org>
Date: 2025-06-02 09:41:26
Also in: bpf, linux-fsdevel, lkml

On Fri, May 30, 2025 at 04:20:39PM +0200, Mickaël Salaün wrote:
On Thu, May 29, 2025 at 10:05:59AM -0700, Song Liu wrote:
quoted
On Thu, May 29, 2025 at 9:57 AM Alexei Starovoitov
[off-list ref] wrote:
[...]
quoted
quoted
How about we describe this as:

Introduce a path iterator, which safely (no crash) walks a struct path.
Without malicious parallel modifications, the walk is guaranteed to
terminate. The sequence of dentries maybe surprising in presence
of parallel directory or mount tree modifications and the iteration may
not ever finish in face of parallel malicious directory tree manipulations.
Hold on. If it's really the case then is the landlock susceptible
to this type of attack already ?
landlock may infinitely loop in the kernel ?
I think this only happens if the attacker can modify the mount or
directory tree as fast as the walk, which is probably impossible
in reality.
Yes, so this is not an infinite loop but an infinite race between the
kernel and a very fast malicious user space process with an infinite
number of available nested writable directories, that would also require
a filesystem (and a kernel) supporting infinite pathname length.
Uhm, I'm not so sure. If you have really deep directory chains and
expose them via bind-mounts in multiple location then it was already
easy to trigger livelocks because e.g., is_subdir() did lockless
sequence counter checks and it refired over and over and over again.
We've fixed that since but such issues aren't all that theoretical. IOW,
the bug was caused simply by having too many concurrent tree
modifications and parts of the code need to make sure that they haven't
affected their result. So I would be very careful with asserting that
it's not possible to hit such issues in real-life...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help