From: "Alexei Starovoitov" <alexei.starovoitov@gmail.com>
To: "Mike Bazov" <mikeba@sentinelone.com>
Cc: "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>,
"John Fastabend" <john.fastabend@gmail.com>,
"Shuah Khan" <shuah@kernel.org>, <bpf@vger.kernel.org>,
<linux-kselftest@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [EXT.MSG] Re: [PATCH RFC bpf-next 0/2] bpf: Do not let preemption cause false recursion drops in trampoline progs
Date: Wed, 04 Nov 2026 02:20:13 +0000 [thread overview]
Message-ID: <DMM2FJ2SNYYO.24TEJ05OOR08E@gmail.com> (raw)
In-Reply-To: <CAPnbwjpv3bkGAKVjc7Eywgo-H4X6uDLYPJWFuSakGs_sBdgr3w@mail.gmail.com>
On Tue, Nov 03, 2026 at 01:28 PM Mike Bazov <mikeba@sentinelone.com> wrote:
> Thanks! fsession does keep entry and exit consistent. It doesn't recover
> the skipped runs though. I ran the selftest scenario with an fsession
> prog on __set_task_comm (7.0 kernel, lazy preemption, 20 rounds): Task
> B's entry and exit runs were both skipped in every round (entry_b=0,
> exit_b=0, recursion_misses=40), since each run still goes through
> prog->active while Task A is preempted mid-program.
Right.
fsession fixes the pairing. It doesn't fix the miss.
> What is the main obstacle to per-task tracking?
Today a fentry prog never runs twice at the same time on one cpu.
Existing progs rely on that for their per-cpu maps.
task A, cpu 0 task B, cpu 0
buf = lookup(&percpu_scratch)
fill buf
<preempted>
buf = lookup(&percpu_scratch)
fill buf
output(buf)
output(buf) <- data of B
A plain (*cnt)++ in a per-cpu map loses updates the same way.
Today B is skipped and recursion_misses counts it.
With the per-task check A sends a corrupted event and nothing counts it.
> And if per-task is not an option, do you have another approach
> in mind so that runs of unrelated tasks are not skipped?
Add bpf_preempt_disable().
Your test forces the preemption in the middle of the prog.
Explicit bpf_preempt_disable() will fix it.
And you'll have an easy way to see why disabling preemtion
for the whole program might hurt your own production.
What are run_cnt and recursion_misses of your progs on inet_sendmsg()
and inet_recvmsg() in production?
next prev parent reply other threads:[~2026-11-04 2:20 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-25 11:02 [PATCH RFC bpf-next 0/2] bpf: Do not let preemption cause false recursion drops in trampoline progs Mike Bazov
2026-10-25 11:02 ` Mike Bazov via B4 Relay
2026-10-25 11:02 ` [PATCH RFC bpf-next 1/2] bpf: Keep recursion-checked trampoline programs non-preemptible on !PREEMPT_RT Mike Bazov
2026-10-25 11:02 ` Mike Bazov via B4 Relay
2026-10-25 11:38 ` sashiko-bot
2026-10-25 11:02 ` [PATCH RFC bpf-next 2/2] selftests/bpf: Add trampoline preemption false-recursion test Mike Bazov
2026-10-25 11:02 ` Mike Bazov via B4 Relay
2026-10-30 22:22 ` [PATCH RFC bpf-next 0/2] bpf: Do not let preemption cause false recursion drops in trampoline progs Alexei Starovoitov
2026-11-02 23:24 ` [EXT.MSG] " Mike Bazov
2026-11-03 1:49 ` Alexei Starovoitov
2026-11-03 21:28 ` Mike Bazov
2026-11-04 2:20 ` Alexei Starovoitov [this message]
2026-11-05 1:12 ` Martin Kelly
2026-11-05 5:18 ` Alexei Starovoitov
2026-11-05 8:53 ` Peter Zijlstra
2026-11-05 20:16 ` Martin Kelly
2026-11-05 12:26 ` Peter Zijlstra
2026-11-05 20:44 ` Martin Kelly
2026-11-03 23:46 ` JP Kobryn
2026-11-04 2:21 ` Alexei Starovoitov
2026-11-05 0:12 ` [EXT.MSG] " Mike Bazov
2026-11-05 5:14 ` Alexei Starovoitov
2026-11-05 21:10 ` Martin Kelly
2026-11-05 23:35 ` Mike Bazov
2026-11-06 22:08 ` Andrii Nakryiko
2026-11-07 21:32 ` Mike Bazov
2026-11-10 0:12 ` JP Kobryn (CrowdStrike)
2026-11-10 20:43 ` Mike Bazov
2026-11-11 2:58 ` JP Kobryn (CrowdStrike)
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=DMM2FJ2SNYYO.24TEJ05OOR08E@gmail.com \
--to=alexei.starovoitov@gmail.com \
--cc=andrii@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=memxor@gmail.com \
--cc=mikeba@sentinelone.com \
--cc=shuah@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.