[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAPhsuW6jZxRBEgz00KV4SasiMhBGyMHoP5dMktoyCOeMbJwmgg@mail.gmail.com>
Date: Wed, 11 Jun 2025 09:31:26 -0700
From: Song Liu <song@...nel.org>
To: Mickaël Salaün <mic@...ikod.net>
Cc: NeilBrown <neil@...wn.name>, Jan Kara <jack@...e.cz>, bpf@...r.kernel.org,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-security-module@...r.kernel.org, kernel-team@...a.com,
andrii@...nel.org, eddyz87@...il.com, ast@...nel.org, daniel@...earbox.net,
martin.lau@...ux.dev, viro@...iv.linux.org.uk, brauner@...nel.org,
kpsingh@...nel.org, mattbobrowski@...gle.com, amir73il@...il.com,
repnop@...gle.com, jlayton@...nel.org, josef@...icpanda.com,
gnoack@...gle.com, m@...wtm.org
Subject: Re: [PATCH v3 bpf-next 1/5] namei: Introduce new helper function path_walk_parent()
On Wed, Jun 11, 2025 at 8:42 AM Mickaël Salaün <mic@...ikod.net> wrote:
[...]
> > We can probably call this __path_walk_parent() and make it static.
> >
> > Then we can add an exported path_walk_parent() that calls
> > __path_walk_parent() and adds extra logic.
> >
> > If this looks good to folks, I can draft v4 based on this idea.
>
> This looks good but it would be better if we could also do a full path
> walk within RCU when possible.
I think we will need some callback mechanism for this. Something like:
for_each_parents(starting_path, root, callback_fn, cb_data, bool try_rcu) {
if (!try_rcu)
goto ref_walk;
__read_seqcount_begin();
/* rcu walk parents, from starting_path until root */
walk_rcu(starting_path, root, path) {
callback_fn(path, cb_data);
}
if (!read_seqcount_retry())
return xxx; /* successful rcu walk */
ref_walk:
/* ref walk parents, from starting_path until root */
walk(starting_path, root, path) {
callback_fn(path, cb_data);
}
return xxx;
}
Personally, I don't like this version very much, because the callback
mechanism is not very flexible, and it is tricky to use it in BPF LSM.
Thanks,
Song
Powered by blists - more mailing lists