From: Jiri Olsa <olsajiri@gmail.com>
To: Lee Jones <lee@kernel.org>
Cc: Yonghong Song <yhs@fb.com>, Jiri Olsa <olsajiri@gmail.com>,
linux-kernel@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
John Fastabend <john.fastabend@gmail.com>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <martin.lau@linux.dev>,
Song Liu <song@kernel.org>, KP Singh <kpsingh@kernel.org>,
Stanislav Fomichev <sdf@google.com>, Hao Luo <haoluo@google.com>,
bpf@vger.kernel.org
Subject: Re: [PATCH 1/1] bpf: Drop unprotected find_vpid() in favour of find_get_pid()
Date: Fri, 22 Jul 2022 22:15:11 +0200 [thread overview]
Message-ID: <YtsFT1yFtb7UW2Xu@krava> (raw)
In-Reply-To: <Ytm92NYx4SyKN4Nm@google.com>
On Thu, Jul 21, 2022 at 09:58:00PM +0100, Lee Jones wrote:
> On Thu, 21 Jul 2022, Yonghong Song wrote:
>
> >
> >
> > On 7/21/22 5:14 AM, Jiri Olsa wrote:
> > > On Thu, Jul 21, 2022 at 12:59:09PM +0100, Lee Jones wrote:
> > > > On Thu, 21 Jul 2022, Jiri Olsa wrote:
> > > >
> > > > > On Thu, Jul 21, 2022 at 12:14:30PM +0100, Lee Jones wrote:
> > > > > > The documentation for find_pid() clearly states:
> > >
> > > typo find_vpid
> > >
> > > > > >
> > > > > > "Must be called with the tasklist_lock or rcu_read_lock() held."
> > > > > >
> > > > > > Presently we do neither.
> > >
> > > just curious, did you see crash related to this or you just spot that
> > >
> > > > > >
> > > > > > In an ideal world we would wrap the in-lined call to find_vpid() along
> > > > > > with get_pid_task() in the suggested rcu_read_lock() and have done.
> > > > > > However, looking at get_pid_task()'s internals, it already does that
> > > > > > independently, so this would lead to deadlock.
> > > > >
> > > > > hm, we can have nested rcu_read_lock calls, right?
> > > >
> > > > I assumed not, but that might be an oversight on my part.
> >
> > From kernel documentation, nested rcu_read_lock is allowed.
> > https://www.kernel.org/doc/Documentation/RCU/Design/Requirements/Requirements.html
> >
> > RCU's grace-period guarantee allows updaters to wait for the completion of
> > all pre-existing RCU read-side critical sections. An RCU read-side critical
> > section begins with the marker rcu_read_lock() and ends with the marker
> > rcu_read_unlock(). These markers may be nested, and RCU treats a nested set
> > as one big RCU read-side critical section. Production-quality
> > implementations of rcu_read_lock() and rcu_read_unlock() are extremely
> > lightweight, and in fact have exactly zero overhead in Linux kernels built
> > for production use with CONFIG_PREEMPT=n.
> >
> > > >
> > > > Would that be your preference?
> > >
> > > seems simpler than calling get/put for ppid
> >
> > The current implementation seems okay since we can hide
> > rcu_read_lock() inside find_get_pid(). We can also avoid
> > nested rcu_read_lock(), which is although allowed but
> > not pretty.
>
> Right, this was my thinking.
>
> Happy to go with whatever you guys decide though.
>
> Make the call and I'll rework, or not.
ok, I can live with the current version ;-) could you please resend
with fixed changelog?
thanks,
jirka
prev parent reply other threads:[~2022-07-22 20:15 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-21 11:14 [PATCH 1/1] bpf: Drop unprotected find_vpid() in favour of find_get_pid() Lee Jones
2022-07-21 11:56 ` Jiri Olsa
2022-07-21 11:59 ` Lee Jones
2022-07-21 12:14 ` Jiri Olsa
2022-07-21 15:53 ` Yonghong Song
2022-07-21 20:58 ` Lee Jones
2022-07-22 20:15 ` Jiri Olsa [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YtsFT1yFtb7UW2Xu@krava \
--to=olsajiri@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=kpsingh@kernel.org \
--cc=lee@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=sdf@google.com \
--cc=song@kernel.org \
--cc=yhs@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.