From: Yonghong Song <yonghong.song@linux.dev>
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>,
kernel-team@fb.com
Subject: [PATCH bpf-next v3 0/3] bpf: Fix trampoline handling of 128-bit values
Date: Fri, 10 Jul 2026 15:52:06 -0700 [thread overview]
Message-ID: <20260710225206.4013062-1-yonghong.song@linux.dev> (raw)
The BPF trampoline preserves only 8 bytes of a target function's return
value (R0), and its register save area under-allocates space for 128-bit
arguments for x86_64. These two problems lead to memory corruption or
incorrect values observed by BPF programs and the real caller.
This series fixes both issues and adds two selftests, otherwise, each of
them will fail if without the corresponding fix.
Changelogs:
v2 -> v3:
- v2: https://lore.kernel.org/bpf/20260710182204.1085329-1-yonghong.song@linux.dev/
- Align __int128 argument at even position enforced by arm64.
v1 -> v2:
- v1: https://lore.kernel.org/bpf/20260710144404.2579671-1-yonghong.song@linux.dev/
- Also handle __int128 arguments for x86_64.
Yonghong Song (3):
bpf: Reject >8 byte return values on return-reading trampoline paths
bpf, x86: Fix trampoline stack size for 128-bit arguments
selftests/bpf: Add tests for >8 byte return value and 128-bit
arguments
arch/x86/net/bpf_jit_comp.c | 7 ++--
kernel/bpf/bpf_struct_ops.c | 12 +++++++
kernel/bpf/verifier.c | 25 +++++++++++++
.../bpf/prog_tests/tracing_failure.c | 12 +++++++
.../selftests/bpf/prog_tests/tracing_struct.c | 36 +++++++++++++++++++
.../selftests/bpf/progs/tracing_failure.c | 6 ++++
.../bpf/progs/tracing_struct_int128.c | 18 ++++++++++
.../selftests/bpf/test_kmods/bpf_testmod.c | 32 +++++++++++++++++
8 files changed, 143 insertions(+), 5 deletions(-)
create mode 100644 tools/testing/selftests/bpf/progs/tracing_struct_int128.c
--
2.53.0-Meta
next reply other threads:[~2026-07-10 22:52 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-10 22:52 Yonghong Song [this message]
2026-07-10 22:52 ` [PATCH bpf-next v3 1/3] bpf: Reject >8 byte return values on return-reading trampoline paths Yonghong Song
2026-07-10 22:52 ` [PATCH bpf-next v3 2/3] bpf, x86: Fix trampoline stack size for 128-bit arguments Yonghong Song
2026-07-10 22:52 ` [PATCH bpf-next v3 3/3] selftests/bpf: Add tests for >8 byte return value and " Yonghong Song
2026-07-11 1:02 ` [PATCH bpf-next v3 0/3] bpf: Fix trampoline handling of 128-bit values Kumar Kartikeya Dwivedi
2026-07-11 3:58 ` Yonghong Song
2026-07-11 12:18 ` Leon Hwang
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=20260710225206.4013062-1-yonghong.song@linux.dev \
--to=yonghong.song@linux.dev \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=kernel-team@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox