From: sashiko-bot@kernel.org
To: "Yonghong Song" <yonghong.song@linux.dev>
Cc: bpf@vger.kernel.org
Subject: Re: [PATCH bpf-next v2 18/20] selftests/bpf: Add an end-to-end .bpf_cleanup exception test
Date: Fri, 18 Sep 2026 04:59:12 +0000 [thread overview]
Message-ID: <20260918045912.C6BB71F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260918044332.3293447-1-yonghong.song@linux.dev>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] bpf: multi-line comments do not follow modern BPF style
--
commit 8ad5e7ea23b9dcb55029206d5cb36453b231f9c8
Author: Yonghong Song <yonghong.song@linux.dev>
selftests/bpf: Add an end-to-end .bpf_cleanup exception test
This commit adds an end-to-end test for .bpf_cleanup exception handling. It
uses inline assembly to construct precise call-site brackets, landing pads,
and cleanup records that mirror compiler output. It also tests shapes that
the kernel should refuse, ensuring the JIT correctly handles or rejects
different landing pad configurations.
> diff --git a/tools/testing/selftests/bpf/prog_tests/exceptions_cleanup.c b/tools/testing/selftests/bpf/prog_tests/exceptions_cleanup.c
> new file mode 100644
> index 0000000000000..d1e45b765af26
> --- /dev/null
> +++ b/tools/testing/selftests/bpf/prog_tests/exceptions_cleanup.c
[ ... ]
> @@ -0,0 +1,79 @@
[ ... ]
> + /* foo3 throws; every pad runs and the cookie is delivered at entry. */
> + if (test__start_subtest("throw_from_foo3"))
> + run(skel, 101, THROW_COOKIE, PADS_FOO3_THREW);
> +
> + /* foo3 returns 2 ^ 1 == 3, so foo2 throws from its own second region;
> + * foo3's frame is long gone, so its pad must not run.
> + */
[Severity: Low]
Does this comment block follow the proper multi-line comment formatting
for the BPF subsystem?
The BPF subsystem strict guidelines require multi-line comments to have
the opening /* on its own line:
/*
* foo3 returns 2 ^ 1 == 3, so foo2 throws from its own second region;
* foo3's frame is long gone, so its pad must not run.
*/
> + if (test__start_subtest("throw_from_foo2"))
> + run(skel, 2, THROW_COOKIE, PADS_FOO2_THREW);
> +
> + exceptions_cleanup__destroy(skel);
> +
> + RUN_TESTS(exceptions_cleanup_fail);
> +}
> diff --git a/tools/testing/selftests/bpf/progs/exceptions_cleanup_fail.c b/tools/testing/selftests/bpf/progs/exceptions_cleanup_fail.c
> new file mode 100644
> index 0000000000000..ce2dac306a84c
> --- /dev/null
> +++ b/tools/testing/selftests/bpf/progs/exceptions_cleanup_fail.c
[ ... ]
> @@ -0,0 +1,600 @@
[ ... ]
> +SEC("socket")
> +__failure __msg("reaches an indirect jump")
> +__naked void gotox_in_pad(void)
> +{
> + asm volatile (
> + ".pushsection .jumptables,\"\",@progbits;"
> +"jt0_%=:"
> + ".quad l0_%= - socket;"
> + ".quad l1_%= - socket;"
> + ".size jt0_%=, 16;"
> + ".global jt0_%=;"
> + ".popsection;"
> +
> +"1:" "call gotox_thrower;" /* cleanup region */
> +"2:"
> + "r0 = 0;"
> + "exit;"
> +"3:" /* landing pad */
> + "r1 = jt0_%= ll;"
> + "r1 += 8;"
> + "r2 = *(u64 *)(r1 + 0);"
> + /* gotox r2. Spelled as a raw insn on purpose: the "gotox" mnemonic
> + * only reached the LLVM assembler in llvm 22, and BPF_RAW_INSN()
> + * needs <linux/bpf.h>, which this file cannot have -- vmlinux.h
> + * already defines the uapi enums.
> + */
[Severity: Low]
Does this multi-line comment format conform to the BPF style guide?
As with the previous comment in exceptions_cleanup.c, the BPF subsystem
mandates that the opening /* resides on its own line for multi-line
comments.
> + ".8byte 0x20d;"
> +"l0_%=:"
> + "call bpf_unwind_resume;"
> + "exit;"
> +"l1_%=:"
> + "call bpf_unwind_resume;"
> + "exit;"
> + CLEANUP_REC("1b", "2b", "3b")
> + ::: __clobber_all);
> +}
> +
> +#endif /* x86 || arm64 */
> +
> +char _license[] SEC("license") = "GPL";
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260918044156.3283973-1-yonghong.song@linux.dev?part=18
next prev parent reply other threads:[~2026-09-18 4:59 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-18 4:41 [PATCH bpf-next v2 00/20] bpf: Run exception cleanup landing pads when bpf_throw() unwinds Yonghong Song
2026-09-18 4:42 ` [PATCH bpf-next v2 01/20] bpf: Accept the compiler's exception cleanup table at program load Yonghong Song
2026-09-18 4:42 ` [PATCH bpf-next v2 02/20] bpf: Add the bpf_unwind_resume() kfunc Yonghong Song
2026-09-18 4:42 ` [PATCH bpf-next v2 03/20] bpf: Add lookups for exception cleanup resumes and landing pads Yonghong Song
2026-09-18 5:44 ` bot+bpf-ci
2026-09-19 4:55 ` Alexei Starovoitov
2026-09-19 17:42 ` Yonghong Song
2026-09-18 4:42 ` [PATCH bpf-next v2 04/20] bpf: Mark the call sites an exception cleanup table covers Yonghong Song
2026-09-18 4:42 ` [PATCH bpf-next v2 05/20] bpf: Make exception landing pads reachable in the CFG Yonghong Song
2026-09-18 4:59 ` sashiko-bot
2026-09-19 19:17 ` Yonghong Song
2026-09-18 5:44 ` bot+bpf-ci
2026-09-19 19:32 ` Yonghong Song
2026-09-18 4:42 ` [PATCH bpf-next v2 06/20] bpf: Explore the landing pads no call site reaches Yonghong Song
2026-09-18 5:44 ` bot+bpf-ci
2026-09-19 19:32 ` Yonghong Song
2026-09-18 4:42 ` [PATCH bpf-next v2 07/20] bpf: Refuse exception cleanup shapes bpf_throw() cannot dispatch Yonghong Song
2026-09-18 4:42 ` [PATCH bpf-next v2 08/20] bpf: Walk the exception unwind in the verifier Yonghong Song
2026-09-18 4:42 ` [PATCH bpf-next v2 09/20] bpf: Refuse a private stack for a program with an exception cleanup table Yonghong Song
2026-09-18 5:44 ` bot+bpf-ci
2026-09-19 19:37 ` Yonghong Song
2026-09-18 4:42 ` [PATCH bpf-next v2 10/20] bpf: Dispatch exception cleanup pads from bpf_throw() Yonghong Song
2026-09-18 5:58 ` bot+bpf-ci
2026-09-19 19:54 ` Yonghong Song
2026-09-18 4:42 ` [PATCH bpf-next v2 11/20] bpf, x86: Dispatch exception cleanup pads at run time Yonghong Song
2026-09-18 5:03 ` sashiko-bot
2026-09-19 20:00 ` Yonghong Song
2026-09-18 5:44 ` bot+bpf-ci
2026-09-19 20:04 ` Yonghong Song
2026-09-18 4:43 ` [PATCH bpf-next v2 12/20] bpf, arm64: " Yonghong Song
2026-09-18 5:44 ` bot+bpf-ci
2026-09-19 20:07 ` Yonghong Song
2026-09-18 4:43 ` [PATCH bpf-next v2 13/20] libbpf: Resolve the compiler's _Unwind_Resume to the kernel's kfunc Yonghong Song
2026-09-18 4:43 ` [PATCH bpf-next v2 14/20] libbpf: Add cleanup_info to bpf_prog_load_opts Yonghong Song
2026-09-18 4:57 ` sashiko-bot
2026-09-19 20:18 ` Yonghong Song
2026-09-18 4:43 ` [PATCH bpf-next v2 15/20] libbpf: Collect .bpf_cleanup records and pass them to the kernel Yonghong Song
2026-09-18 5:00 ` sashiko-bot
2026-09-19 20:21 ` Yonghong Song
2026-09-18 4:43 ` [PATCH bpf-next v2 16/20] libbpf: Carry the exception cleanup table through the light skeleton Yonghong Song
2026-09-18 5:02 ` sashiko-bot
2026-09-19 20:27 ` Yonghong Song
2026-09-18 4:43 ` [PATCH bpf-next v2 17/20] libbpf: Let the static linker carry .bpf_cleanup relocations Yonghong Song
2026-09-18 5:01 ` sashiko-bot
2026-09-19 20:31 ` Yonghong Song
2026-09-18 5:44 ` bot+bpf-ci
2026-09-19 20:32 ` Yonghong Song
2026-09-18 4:43 ` [PATCH bpf-next v2 18/20] selftests/bpf: Add an end-to-end .bpf_cleanup exception test Yonghong Song
2026-09-18 4:59 ` sashiko-bot [this message]
2026-09-18 5:58 ` bot+bpf-ci
2026-09-19 20:34 ` Yonghong Song
2026-09-18 4:43 ` [PATCH bpf-next v2 19/20] selftests/bpf: Cover the exception cleanup shapes the chain does not reach Yonghong Song
2026-09-18 5:01 ` sashiko-bot
2026-09-18 5:44 ` bot+bpf-ci
2026-09-19 21:13 ` Yonghong Song
2026-09-18 4:43 ` [PATCH bpf-next v2 20/20] selftests/bpf: Load an exception cleanup program from a light skeleton Yonghong Song
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=20260918045912.C6BB71F000FF@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox