On Tue, Feb 3, 2026 at 1:39 AM Jiri Olsa <[email protected]> wrote:
>
> Adding struct bpf_tramp_node to decouple the link out of the trampoline
> attachment info.
>
> At the moment the object for attaching bpf program to the trampoline is
> 'struct bpf_tramp_link':
>
>   struct bpf_tramp_link {
>        struct bpf_link link;
>        struct hlist_node tramp_hlist;
>        u64 cookie;
>   }
>
> The link holds the bpf_prog pointer and forces one link - one program
> binding logic. In following changes we want to attach program to multiple
> trampolines but have just one bpf_link object.
>
> Splitting struct bpf_tramp_link into:
>
>   struct bpf_tramp_link {
>        struct bpf_link link;
>        struct bpf_tramp_node node;
>   };
>
>   struct bpf_tramp_node {
>        struct hlist_node tramp_hlist;
>        struct bpf_prog *prog;
>        u64 cookie;
>   };

I'm a bit confused here. For singular fentry/fexit attachment we have
one trampoline and one program, right? For multi-fentry, we have
multiple trampoline, but still one program pointer, no? So why put a
prog pointer into tramp_node?.. You do want cookie in tramp_node, yes,
but not the program. Because then there is also a question what is
bpf_link's prog pointing to?...


>
> where 'struct bpf_tramp_link' defines standard single trampoline link,
> and 'struct bpf_tramp_node' is the attachment trampoline object. This
> will allow us to define link for multiple trampolines, like:
>
>   struct bpf_tracing_multi_link {
>        struct bpf_link link;
>        ...
>        int nodes_cnt;
>        struct bpf_tracing_multi_node nodes[] __counted_by(nodes_cnt);
>   };
>
> Signed-off-by: Jiri Olsa <[email protected]>
> ---
>  arch/arm64/net/bpf_jit_comp.c  |  58 +++++++++----------
>  arch/s390/net/bpf_jit_comp.c   |  42 +++++++-------
>  arch/x86/net/bpf_jit_comp.c    |  54 ++++++++---------
>  include/linux/bpf.h            |  47 ++++++++-------
>  kernel/bpf/bpf_struct_ops.c    |  24 ++++----
>  kernel/bpf/syscall.c           |  25 ++++----
>  kernel/bpf/trampoline.c        | 102 ++++++++++++++++-----------------
>  net/bpf/bpf_dummy_struct_ops.c |  11 ++--
>  8 files changed, 185 insertions(+), 178 deletions(-)
>

[...]

Reply via email to