[PATCHv3 bpf-next 0/8] bpf: Fixes for kprobe multi on kernel modules

Jiri Olsa
2022-10-25T13:41:57Z

hi,
Martynas reported kprobe _multi link does not resolve symbols
from kernel modules, which attach by address works.

In addition while fixing that I realized we do not take module
reference if the module has kprobe_multi link on top of it and
can be removed.

There's mo crash related to this, it will silently disappear from
ftrace tables, while kprobe_multi link stays up with no data.

This patchset has fixes for both issues.

v3 changes:
- reorder fields in struct bpf_kprobe_multi_link [Andrii]
- added ack [Andrii]

v2 changes:
- added acks (Song)
- added comment to kallsyms_callback (Song)
- change module_callback realloc logic (Andrii)
- get rid of macros in tests (Andrii)

thanks,
jirka

---
Jiri Olsa (8):
kallsyms: Make module_kallsyms_on_each_symbol generally available
ftrace: Add support to resolve module symbols in ftrace_lookup_symbols
bpf: Rename __bpf_kprobe_multi_cookie_cmp to bpf_kprobe_multi_addrs_cmp
bpf: Take module reference on kprobe_multi link
selftests/bpf: Add load_kallsyms_refresh function
selftests/bpf: Add bpf_testmod_fentry_* functions
selftests/bpf: Add kprobe_multi check to module attach test
selftests/bpf: Add kprobe_multi kmod attach api tests

include/linux/module.h | 9 +++++++++
kernel/module/kallsyms.c | 2 --
kernel/trace/bpf_trace.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
kernel/trace/ftrace.c | 16 +++++++++++-----
tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c | 24 ++++++++++++++++++++++++
tools/testing/selftests/bpf/prog_tests/kprobe_multi_testmod_test.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tools/testing/selftests/bpf/prog_tests/module_attach.c | 7 +++++++
tools/testing/selftests/bpf/progs/kprobe_multi.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
tools/testing/selftests/bpf/progs/test_module_attach.c | 6 ++++++
tools/testing/selftests/bpf/trace_helpers.c | 20 +++++++++++++-------
tools/testing/selftests/bpf/trace_helpers.h | 2 ++
11 files changed, 306 insertions(+), 17 deletions(-)
create mode 100644 tools/testing/selftests/bpf/prog_tests/kprobe_multi_testmod_test.c