It turns out that current implementation of multi-uprobe PID filtering logic is broken. It filters by thread, while the promise is filtering by process. Patch #1 fixes the logic trivially. The rest is testing and mitigations that are necessary for libbpf to not break users of USDT programs. Andrii Nakryiko (5): bpf: fix multi-uprobe PID filtering logic bpf: remove unnecessary rcu_read_{lock,unlock}() in multi-uprobe attach logic libbpf: detect broken PID filtering logic for multi-uprobe selftests/bpf: extend multi-uprobe tests with child thread case selftests/bpf: extend multi-uprobe tests with USDTs kernel/trace/bpf_trace.c | 10 +- tools/lib/bpf/features.c | 31 ++++- .../bpf/prog_tests/uprobe_multi_test.c | 131 ++++++++++++++++-- .../selftests/bpf/progs/uprobe_multi.c | 50 ++++++- 4 files changed, 203 insertions(+), 19 deletions(-) -- 2.43.0