From: Kumar Kartikeya Dwivedi <memxor@gmail.com>
To: bpf@vger.kernel.org
Cc: Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Eduard Zingerman <eddyz87@gmail.com>,
Emil Tsalapatis <emil@etsalapatis.com>, Tejun Heo <tj@kernel.org>,
kkd@meta.com, kernel-team@meta.com
Subject: [PATCH bpf-next v5 00/14] Add arena argument support to kfuncs and struct_ops
Date: Sat, 8 Aug 2026 02:39:20 +0200 [thread overview]
Message-ID: <20260808003938.3486067-1-memxor@gmail.com> (raw)
This is a continuation of patches in [0], with mostly minor changes and
reordering. The motivation is covered in that link. A major change is
moving to two tags (__arena and __arena__nullable) and moving the changes
to JIT to emit more optimized sequences.
Please see commit logs for details.
[0]: https://lore.kernel.org/bpf/20260713024414.3759854-1-tj@kernel.org
Changelog:
----------
v4 -> v5
v4: https://lore.kernel.org/bpf/20260805210427.3218326-1-memxor@gmail.com
* Remove the redundant patch-8 capability comment and duplicate
nullable kfunc test coverage. (Eduard)
* Introduce the final bpf_tramp_arena_base() interface directly with
function-model argument flags, avoiding temporary slot bitmaps and
arena_nullable state; simplify struct_ops pointer validation. (Eduard)
* Simplify kfunc arena nullability classification by using the common
nullable path for both arena suffixes while leaving the function model
to distinguish JIT NULL preservation. (Amery)
* Keep bpf_prog_has_arena_ctx_arg() in bpf_verifier.h from its
introduction so trampoline and verifier users share one inline
definition, avoiding BPF_JIT/BPF_SYSCALL link dependencies.
(Eduard, BPF CI Bot)
* Reject both tracing and extension attachments to struct_ops programs
with arena context arguments, and add fentry, fexit, and freplace
rejection tests. (Eduard, Sashiko)
v3 -> v4
v3: https://lore.kernel.org/bpf/20260803125115.2264733-1-memxor@gmail.com
* Rename __arena_nullable to __arena__nullable and prioritize the
composite suffix over __nullable during argument classification.
(Sashiko, Eduard)
* Resolve instructions before collecting subprograms and kfuncs so kfunc
prototype validation can use associated arena state.
* Move the arena kfunc and JIT-sequence test entry points into
prog_tests/verifier.c. (Eduard)
* Match the generated L0 target and call in nullable JIT assertions.
(Eduard)
* Route arena kfunc validation through the common argument-checking path.
(Amery)
* Reuse btf_func_model argument flags for struct_ops arena arguments
instead of maintaining separate trampoline slot metadata. (Eduard)
* Check the generic-trampoline arena argument invariant at link time and
warn once on violations. (Eduard)
* Reject tracing attachments to struct_ops programs with arena context
arguments whose indirect trampolines convert the pointers. (Sashiko)
v2 -> v3
v2: https://lore.kernel.org/bpf/20260726013105.3689867-1-memxor@gmail.com
* Rebase onto current bpf-next to resolve conflicts.
v1 -> v2
v1: https://lore.kernel.org/bpf/20260715220052.1590783-1-memxor@gmail.com
* Fix documentation to only mention x86 for now. (Sashiko)
* Move arg bitmap from insn_aux_data to kfunc descriptor. (Eduard)
Kumar Kartikeya Dwivedi (5):
bpf: Rename 'early' BTF checking as a preparation phase
bpf: Split subprogram and kfunc collection
bpf: Collect kfuncs after resolving program resources
bpf: Reject tracing/freplace progs for struct_ops with arena args
selftests/bpf: Test attach rejection for struct_ops arena programs
Tejun Heo (9):
bpf: Support __arena and __arena__nullable kfunc argument suffixes
bpf: Support __arena and __arena__nullable on struct_ops arguments
bpf, x86: JIT __arena kfunc argument rebasing
bpf, x86: Convert struct_ops arena arguments in the trampoline
selftests/bpf: Add kfunc __arena and __arena__nullable argument tests
selftests/bpf: Add JIT-sequence tests for __arena kfunc arguments
selftests/bpf: Add struct_ops __arena and __arena__nullable argument
tests
bpf, x86: Fix stack-passed arguments for indirect trampolines
selftests/bpf: Test stack-passed struct_ops arena arguments
Documentation/bpf/kfuncs.rst | 39 +++
arch/x86/net/bpf_jit_comp.c | 122 ++++++++-
include/linux/bpf.h | 15 ++
include/linux/bpf_verifier.h | 14 +-
include/linux/filter.h | 1 +
kernel/bpf/bpf_struct_ops.c | 56 +++--
kernel/bpf/btf.c | 28 ++-
kernel/bpf/check_btf.c | 14 +-
kernel/bpf/core.c | 5 +
kernel/bpf/trampoline.c | 37 +++
kernel/bpf/verifier.c | 125 ++++++++--
.../bpf/prog_tests/test_struct_ops_arena.c | 128 ++++++++++
.../selftests/bpf/prog_tests/verifier.c | 6 +
.../testing/selftests/bpf/progs/arena_kfunc.c | 234 ++++++++++++++++++
.../selftests/bpf/progs/arena_kfunc_jit.c | 98 ++++++++
.../selftests/bpf/progs/struct_ops_arena.c | 115 +++++++++
.../bpf/progs/struct_ops_arena_attach.c | 25 ++
.../bpf/progs/struct_ops_arena_fail.c | 20 ++
.../selftests/bpf/test_kmods/bpf_testmod.c | 82 ++++++
.../selftests/bpf/test_kmods/bpf_testmod.h | 6 +
.../bpf/test_kmods/bpf_testmod_kfunc.h | 12 +
21 files changed, 1123 insertions(+), 59 deletions(-)
create mode 100644 tools/testing/selftests/bpf/prog_tests/test_struct_ops_arena.c
create mode 100644 tools/testing/selftests/bpf/progs/arena_kfunc.c
create mode 100644 tools/testing/selftests/bpf/progs/arena_kfunc_jit.c
create mode 100644 tools/testing/selftests/bpf/progs/struct_ops_arena.c
create mode 100644 tools/testing/selftests/bpf/progs/struct_ops_arena_attach.c
create mode 100644 tools/testing/selftests/bpf/progs/struct_ops_arena_fail.c
base-commit: 51476f6a06ef55cecf785ae1622c638fa8cfb846
--
2.53.0-Meta
next reply other threads:[~2026-08-08 0:39 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-08 0:39 Kumar Kartikeya Dwivedi [this message]
2026-08-08 0:39 ` [PATCH bpf-next v5 01/14] bpf: Rename 'early' BTF checking as a preparation phase Kumar Kartikeya Dwivedi
2026-08-08 0:39 ` [PATCH bpf-next v5 02/14] bpf: Split subprogram and kfunc collection Kumar Kartikeya Dwivedi
2026-08-08 1:59 ` bot+bpf-ci
2026-08-08 0:39 ` [PATCH bpf-next v5 03/14] bpf: Collect kfuncs after resolving program resources Kumar Kartikeya Dwivedi
2026-08-08 0:39 ` [PATCH bpf-next v5 04/14] bpf: Support __arena and __arena__nullable kfunc argument suffixes Kumar Kartikeya Dwivedi
2026-08-08 0:39 ` [PATCH bpf-next v5 05/14] bpf: Support __arena and __arena__nullable on struct_ops arguments Kumar Kartikeya Dwivedi
2026-08-08 1:17 ` sashiko-bot
2026-08-08 9:49 ` Eduard Zingerman
2026-08-08 0:39 ` [PATCH bpf-next v5 06/14] bpf, x86: JIT __arena kfunc argument rebasing Kumar Kartikeya Dwivedi
2026-08-08 0:39 ` [PATCH bpf-next v5 07/14] bpf, x86: Convert struct_ops arena arguments in the trampoline Kumar Kartikeya Dwivedi
2026-08-08 0:39 ` [PATCH bpf-next v5 08/14] selftests/bpf: Add kfunc __arena and __arena__nullable argument tests Kumar Kartikeya Dwivedi
2026-08-08 0:39 ` [PATCH bpf-next v5 09/14] selftests/bpf: Add JIT-sequence tests for __arena kfunc arguments Kumar Kartikeya Dwivedi
2026-08-08 0:39 ` [PATCH bpf-next v5 10/14] selftests/bpf: Add struct_ops __arena and __arena__nullable argument tests Kumar Kartikeya Dwivedi
2026-08-08 1:03 ` sashiko-bot
2026-08-08 0:39 ` [PATCH bpf-next v5 11/14] bpf, x86: Fix stack-passed arguments for indirect trampolines Kumar Kartikeya Dwivedi
2026-08-08 1:04 ` sashiko-bot
2026-08-08 0:39 ` [PATCH bpf-next v5 12/14] selftests/bpf: Test stack-passed struct_ops arena arguments Kumar Kartikeya Dwivedi
2026-08-08 0:39 ` [PATCH bpf-next v5 13/14] bpf: Reject tracing/freplace progs for struct_ops with arena args Kumar Kartikeya Dwivedi
2026-08-08 1:17 ` sashiko-bot
2026-08-08 9:57 ` Eduard Zingerman
2026-08-08 0:39 ` [PATCH bpf-next v5 14/14] selftests/bpf: Test attach rejection for struct_ops arena programs Kumar Kartikeya Dwivedi
2026-08-08 9:58 ` Eduard Zingerman
2026-08-08 10:10 ` [PATCH bpf-next v5 00/14] Add arena argument support to kfuncs and struct_ops patchwork-bot+netdevbpf
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=20260808003938.3486067-1-memxor@gmail.com \
--to=memxor@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=kernel-team@meta.com \
--cc=kkd@meta.com \
--cc=tj@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox