From: Alexei Starovoitov Date: Sun, 7 Jun 2026 17:03:03 +0000 (-0700) Subject: Merge branch 'bpf-tracing_multi-link' X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=c49f336dbcf30ff8622d3725c54fe1c90e8ccd9c;p=thirdparty%2Flinux.git Merge branch 'bpf-tracing_multi-link' Jiri Olsa says: ==================== bpf: tracing_multi link Add tracing_multi link support that allows fast attachment of tracing program to many functions. RFC: https://lore.kernel.org/bpf/20260203093819.2105105-1-jolsa@kernel.org/ v1: https://lore.kernel.org/bpf/20260220100649.628307-1-jolsa@kernel.org/ v2: https://lore.kernel.org/bpf/20260304222141.497203-1-jolsa@kernel.org/ v3: https://lore.kernel.org/bpf/20260316075138.465430-1-jolsa@kernel.org/ v4: https://lore.kernel.org/bpf/20260324081846.2334094-1-jolsa@kernel.org/ v5: https://lore.kernel.org/bpf/20260417192502.194548-1-jolsa@kernel.org/ v6: https://lore.kernel.org/bpf/20260527113951.46265-1-jolsa@kernel.org/ v7: https://lore.kernel.org/bpf/20260603110554.29590-1-jolsa@kernel.org/ v8 changes: - add back the btf_is_union check to btf_get_type_size [sashiko] v7 changes: - added ftrace_hash_count stub for !CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS cade [sashiko] - selftests fixes [sashiko] - use hash_ptr in select_trampoline_lock [sashiko] - changed the check duplicate logic in check_dup_ids [sashiko] - use sort_r_nonatomic in check_dup_ids [sashiko] - added BPF_TRACE_FSESSION_MULTI to can_be_sleepable, plus added testcase for sleepable fsession - make bpf_tracing_multi_opts pointer fields as const - add ___migrate_enable to trace_blacklist v6 changes: - move ftrace_hash_count declaration under CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS [sashiko] - fix ftrace_hash_remove check/deref [sashiko] - disable context access for multi programs by using stub function with no arguments for verification [sashiko] - add __used for bpf_multi_func, and removed arguments, we do not allow direct access [sashiko] - rebased on latest loongarch changes, fix ppc build - guard update_ftrace_direct_del with ftrace_hash_count on rollback [sashiko] - fix noreturn attachment condition in bpf_check_attach_btf_id_multi [sashiko] - fail early on multiple same IDs provided by user [sashiko] - fix selftests error paths [sashiko] - add MAX_RESOLVE_DEPTH check to btf_get_type_size [sashiko] - use btf__pointer_size [sashiko] - fixed compilation on powerpc [sashiko] - added verifier fails selftest - after discussing with Song, it was determined that cleaning up FTRACE_OPS_CMD_DISABLE_SHARE_IPMODIFY_PEER is not strictly necessary — keeping the trampoline in the ipmodify_enabled state is acceptable. The race condition this introduces remains unlikely, so the concern raised in [1] will not be addressed at this time. [1] https://lore.kernel.org/bpf/aec7bAbGlnEo3R1g@krava/ v5 changes: - add dedicated hashes used for detach, so there's no need to allocate them on detach [sashiko] - safely release old trampoline images [sashiko] - add cond_resched() to couple of loops [sashiko] - validate attr->link_create.target_fd [sashiko] - allow only bpf_get_func_ret() for return value retrieval [sashiko] - do not allow attachment of fexit/fsession_multi for noreturn functions [sashiko] - fixed double free/close in libbpf btf cleanup, in separate patch [sashiko] - make btf_type_is_traceable_func closer to btf_distill_func_proto [sashiko] - add prog->attach_btf_obj_fd check to collect_func_ids_by_glob, to check we don't load module programs for kernel [sashiko] - make sure program is loaded in bpf_program__attach_tracing_multi [sashiko] - several selftests fixes [sashiko] - add attach_type to fdinfo output [Leon Hwang] - selftests cleanup fixes [Leon Hwang] v4 changes: - unlink rollback fix (added ftrace_hash_count) [bot] - use const for some bpf_link_create_opts tracing_multi members [bot] - adding missing comment for lockdep keys [bot] - selftest error path fixes (leaks) and other assorted test fixes [Leon Hwang] - several compile fixes wrt CONFIG_BPF_SYSCALL and CONFIG_BPF_JIT [kernel test robot] - make ftrace_hash_clear global, because it's needed in rollback v3 changes: - fix module parsing [Leon Hwang] - use function traceable check from libbpf [Leon Hwang] - use ptr_to_u64 and fix/updated few comments [ci] - display cookies as decimal numbers [ci] - added link_create.flags check [ci] - fix error path in bpf_trampoline_multi_detach [ci] - make fentry/fexit.multi not extendable [ci] - add missing OPTS_VALID to bpf_program__attach_tracing_multi [ci] v2 changes: - allocate data.unreg in bpf_trampoline_multi_attach for rollback path [ci] and fixed link count setup in rollback path [ci] - several small assorted fixes [ci] - added loongarch and powerpc changes for struct bpf_tramp_node change - added support to attach functions from modules - added tests for sleepable programs - added rollback tests v1 changes: - added ftrace_hash_count as wrapper for hash_count [Steven] - added trampoline mutex pool [Andrii] - reworked 'struct bpf_tramp_node' separatoin [Andrii] - the 'struct bpf_tramp_node' now holds pointer to bpf_link, which is similar to what we do for uprobe_multi; I understand it's not a fundamental change compared to previous version which used bpf_prog pointer instead, but I don't see better way of doing this.. I'm happy to discuss this further if there's better idea - reworked 'struct bpf_fsession_link' based on bpf_tramp_node - made btf__find_by_glob_kind function internal helper [Andrii] - many small assorted fixes [Andrii,CI] - added session support [Leon Hwang] - added cookies support - added more tests Note I plan to send linkinfo support separately, the patchset is big enough. thanks, jirka ==================== Link: https://patch.msgid.link/20260606123955.345967-1-jolsa@kernel.org Signed-off-by: Alexei Starovoitov --- c49f336dbcf30ff8622d3725c54fe1c90e8ccd9c