From: Junseo Lim <zirajs7@gmail.com>
To: florent.revest@linux.dev
Cc: bpf@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <martin.lau@linux.dev>,
Eduard Zingerman <eddyz87@gmail.com>,
Kumar Kartikeya Dwivedi <memxor@gmail.com>,
Song Liu <song@kernel.org>,
Yonghong Song <yonghong.song@linux.dev>,
Jiri Olsa <jolsa@kernel.org>, KP Singh <kpsingh@kernel.org>,
Emil Tsalapatis <emil@etsalapatis.com>,
John Fastabend <john.fastabend@gmail.com>,
"Paul E. McKenney" <paulmck@kernel.org>,
Jose Fernandez <jose.fernandez@linux.dev>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH bpf] bpf: Keep progs alive until the trampoline image calling them is freed
Date: Fri, 21 Aug 2026 16:58:11 +0900 [thread overview]
Message-ID: <aogAKH0PEmuOa--X@omen-arch> (raw)
In-Reply-To: <bc0edb11e07e0f6147e9c552805d0029c7aec7fc@linux.dev>
On Thu, Aug 20, 2026 at 04:06:30PM +0000, florent.revest@linux.dev wrote:
> 20 août 2026 à 17:26 "Junseo Lim" <zirajs7@gmail.com mailto:zirajs7@gmail.com?to=%22Junseo%20Lim%22%20%3Czirajs7%40gmail.com%3E > a écrit:
>
> >
> > On Wed, Aug 19, 2026 at 12:22:50PM +0000, Florent Revest (Anthropic) wrote:
> >
> > >
> > > bpf_tramp_image_put() makes sure a trampoline image is not freed while
> > > a task may still be running in it (call_rcu_tasks() + im->pcref), but
> > > nothing similar is done for the progs called by that image. Since
> > > commit e21aa341785c ("bpf: Fix fexit trampoline."), detach patches the
> > > return path so that a task still in the original function skips the
> > > fexit progs when it comes back, and counts on the prog's own RCU flavor
> > > to cover a task that is inside a prog. On that basis the last prog
> > > reference is dropped right away and the prog is freed after a single
> > > RCU / RCU tasks trace grace period.
> > >
> > > [...]
> > >
> > > Fix it by having the image take a reference on every prog it calls, in
> > > bpf_tramp_image_alloc(), and drop them in bpf_tramp_image_free(). A
> > > detached prog now stays loaded until the old image is gone, which
> > > reverts a deliberate choice of commit e21aa341785c ("bpf: Fix fexit
> > > trampoline."). Detached fexit progs still stop being called right away
> > > since the return path is patched.
> > >
> > This appears to be the same issue addressed by my earlier patch [1].
> >
> > I think the flexible-array approach here is cleaner, so I'm fine with this
> > version going forward. Could you please carry the original Reported-by tag?
> >
> > Reported-by: Sechang Lim <rhkrqnwk98@gmail.com>
> >
> > [1] https://lore.kernel.org/bpf/20260815071927.147049-1-zirajs7@gmail.com/T/
> >
> Oh wow, sorry, I had no idea we raced on this!
>
> I also like the idea of guarding this with CONFIG_PREEMPTION and of
> course I don't mind adding your Reported-by tag in a v2. I'll give a bit
> of time for others to chime in first.
Just in case it helps with the CONFIG_PREEMPTION angle: Sashiko pointed out
on my patch that a CONFIG_PREEMPTION guard would leave the unlink/update
failure path uncovered on CONFIG_PREEMPTION=n.
So your unconditional version looks right to me.
Cheers,
Junseo
next prev parent reply other threads:[~2026-08-21 7:58 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-19 12:22 [PATCH bpf] bpf: Keep progs alive until the trampoline image calling them is freed Florent Revest (Anthropic)
2026-08-20 15:26 ` Junseo Lim
[not found] ` <bc0edb11e07e0f6147e9c552805d0029c7aec7fc@linux.dev>
2026-08-21 7:58 ` Junseo Lim [this message]
2026-08-31 21:07 ` Florent Revest
2026-08-20 16:19 ` Leon Hwang
2026-08-30 10:40 ` Kumar Kartikeya Dwivedi
2026-08-30 13:21 ` Alexei Starovoitov
2026-08-31 2:43 ` Kumar Kartikeya Dwivedi
2026-08-31 20:58 ` Florent Revest
2026-09-02 5:57 ` Alexei Starovoitov
2026-09-02 10:15 ` Florent Revest
2026-09-02 22:06 ` Alexei Starovoitov
2026-09-02 23:25 ` Florent Revest
2026-09-03 0:48 ` Alexei Starovoitov
2026-09-12 0:20 ` Alexei Starovoitov
2026-09-12 10:00 ` Florent Revest
2026-08-31 16:40 ` Jiri Olsa
2026-08-31 20:43 ` Florent Revest
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=aogAKH0PEmuOa--X@omen-arch \
--to=zirajs7@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=emil@etsalapatis.com \
--cc=florent.revest@linux.dev \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=jose.fernandez@linux.dev \
--cc=kpsingh@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=memxor@gmail.com \
--cc=paulmck@kernel.org \
--cc=song@kernel.org \
--cc=yonghong.song@linux.dev \
/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.