From: sashiko-bot@kernel.org
To: "Jiri Olsa" <jolsa@kernel.org>
Cc: bpf@vger.kernel.org
Subject: Re: [PATCHv6 bpf-next 04/29] bpf: Use mutex lock pool for bpf trampolines
Date: Wed, 27 May 2026 12:21:43 +0000 [thread overview]
Message-ID: <20260527122143.CE5ED1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260527113951.46265-5-jolsa@kernel.org>
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] Hash collisions in the new global trampoline lock pool cause unrelated kprobe, fprobe, and BPF link registrations to spuriously fail with -EAGAIN.
- [Low] Suboptimal pointer hashing API used for trampoline pointers.
- [Low] Multi-line comments modified by the patch do not follow the modern kernel comment style for the BPF subsystem.
--
commit db06fb69cc58248a60a56902b3ac29b2878a30f9
Author: Jiri Olsa <jolsa@kernel.org>
bpf: Use mutex lock pool for bpf trampolines
This commit replaces the per-trampoline mutex with a global pool of 32
mutexes to reduce lock depth during multi-trampoline attachment.
Trampolines hash into this pool to acquire locks.
> diff --git a/kernel/bpf/trampoline.c b/kernel/bpf/trampoline.c
> index a4298a25d4bae..df7634de0ca2c 100644
> --- a/kernel/bpf/trampoline.c
> +++ b/kernel/bpf/trampoline.c
[ ... ]
> +static struct mutex *select_trampoline_lock(struct bpf_trampoline *tr)
> +{
> + return &trampoline_locks[hash_64((u64)(uintptr_t) tr, TRAMPOLINE_LOCKS_BITS)].mutex;
> +}
[Severity: Low]
This isn't a bug, but could we use the dedicated hash_ptr() macro from
linux/hash.h here instead of casting the pointer to u64?
[ ... ]
> if (cmd == FTRACE_OPS_CMD_ENABLE_SHARE_IPMODIFY_SELF) {
> /* This is called inside register_ftrace_direct_multi(), so
> - * tr->mutex is already locked.
> + * trampoline's mutex is already locked.
> */
[Severity: Low]
This isn't a bug, but since this multi-line comment is being modified,
should the opening /* be placed on its own line to match the modern
BPF subsystem comment style?
[ ... ]
> * In both cases, direct_mutex is already locked. Use
> - * mutex_trylock(&tr->mutex) to avoid deadlock in race condition
> - * (something else is making changes to this same trampoline).
> + * mutex_trylock(select_trampoline_lock(tr)) to avoid deadlock in race condition
> + * (something else holds the same pool lock).
> */
> - if (!mutex_trylock(&tr->mutex)) {
> - /* sleep 1 ms to make sure whatever holding tr->mutex makes
> - * some progress.
> + if (!mutex_trylock(select_trampoline_lock(tr))) {
[Severity: High]
Could this shared lock pool cause unrelated probe registrations to spuriously
fail with -EAGAIN?
If a tracing tool registers an ftrace function with FTRACE_OPS_FL_IPMODIFY,
ftrace calls the trampoline's ops_func callback.
If another unrelated BPF trampoline is concurrently being modified and
happens to hash to the same bucket in trampoline_locks, this mutex_trylock
will fail.
Since upstream callers do not retry on -EAGAIN, will this false sharing
lead to unpredictable probe attachment failures under load?
> + /* sleep 1 ms to make sure whatever holding select_trampoline_lock(tr)
> + * makes some progress.
> */
> msleep(1);
> return -EAGAIN;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260527113951.46265-5-jolsa@kernel.org?part=1
next prev parent reply other threads:[~2026-05-27 12:21 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-27 11:39 [PATCHv6 bpf-next 00/29] bpf: tracing_multi link Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 01/29] ftrace: Add ftrace_hash_count function Jiri Olsa
2026-05-27 11:57 ` sashiko-bot
2026-05-28 13:10 ` Jiri Olsa
2026-05-27 12:37 ` bot+bpf-ci
2026-05-27 11:39 ` [PATCHv6 bpf-next 02/29] ftrace: Add ftrace_hash_remove function Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 03/29] ftrace: Add add_ftrace_hash_entry function Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 04/29] bpf: Use mutex lock pool for bpf trampolines Jiri Olsa
2026-05-27 12:21 ` sashiko-bot [this message]
2026-05-28 13:13 ` Jiri Olsa
2026-05-27 12:59 ` bot+bpf-ci
2026-05-27 11:39 ` [PATCHv6 bpf-next 05/29] bpf: Add struct bpf_trampoline_ops object Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 06/29] bpf: Move trampoline image setup into bpf_trampoline_ops callbacks Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 07/29] bpf: Add bpf_trampoline_add/remove_prog functions Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 08/29] bpf: Add struct bpf_tramp_node object Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 09/29] bpf: Factor fsession link to use struct bpf_tramp_node Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 10/29] bpf: Add multi tracing attach types Jiri Olsa
2026-05-27 12:59 ` bot+bpf-ci
2026-05-28 13:13 ` Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 11/29] bpf: Move sleepable verification code to btf_id_allow_sleepable Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 12/29] bpf: Add bpf_trampoline_multi_attach/detach functions Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 13/29] bpf: Add support for tracing multi link Jiri Olsa
2026-05-27 14:34 ` sashiko-bot
2026-05-28 13:13 ` Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 14/29] bpf: Add support for tracing_multi link cookies Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 15/29] bpf: Add support for tracing_multi link session Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 16/29] bpf: Add support for tracing_multi link fdinfo Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 17/29] libbpf: Add bpf_object_cleanup_btf function Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 18/29] libbpf: Add bpf_link_create support for tracing_multi link Jiri Olsa
2026-05-27 12:09 ` sashiko-bot
2026-05-28 13:10 ` Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 19/29] libbpf: Add btf_type_is_traceable_func function Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 20/29] libbpf: Add support to create tracing multi link Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 21/29] selftests/bpf: Add tracing multi skel/pattern/ids attach tests Jiri Olsa
2026-05-27 12:01 ` sashiko-bot
2026-05-28 13:10 ` Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 22/29] selftests/bpf: Add tracing multi skel/pattern/ids module " Jiri Olsa
2026-05-27 12:59 ` bot+bpf-ci
2026-05-28 13:10 ` Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 23/29] selftests/bpf: Add tracing multi intersect tests Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 24/29] selftests/bpf: Add tracing multi cookies test Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 25/29] selftests/bpf: Add tracing multi session test Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 26/29] selftests/bpf: Add tracing multi attach fails test Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 27/29] selftests/bpf: Add tracing multi verifier " Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 28/29] selftests/bpf: Add tracing multi attach benchmark test Jiri Olsa
2026-05-27 11:39 ` [PATCHv6 bpf-next 29/29] selftests/bpf: Add tracing multi attach rollback tests Jiri Olsa
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=20260527122143.CE5ED1F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=jolsa@kernel.org \
--cc=sashiko-reviews@lists.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.