While working on bpftrace support for BTF in modules [1], I noticed that the verifier behaves incorrectly when attaching to fentry of multiple functions of the same name located in different modules (or in vmlinux). The reason for this is that if the target program is not specified, the verifier will search kallsyms for the trampoline address to attach to. The entire kallsyms is always searched, not respecting the module in which the function to attach to is located. This patch fixes the above issue by extracting the module name from the BTF of the attachment target (which must be specified) and by doing the search in kallsyms of the correct module. This also adds a new test in test_progs which tries to attach a program to fentry of two functions of the same name, one located in vmlinux and the other in bpf_testmod. Prior to the fix, the verifier would always use the vmlinux function address as the target trampoline, attempting to attach two functions to the same trampoline (which is prohibited). [1] https://github.com/iovisor/bpftrace/pull/2315 Viktor Malik (2): bpf: Fix attaching fentry/fexit/fmod_ret/lsm to modules bpf/selftests: Test fentry attachment to shadowed functions include/linux/btf.h | 1 + kernel/bpf/btf.c | 5 + kernel/bpf/verifier.c | 9 +- net/bpf/test_run.c | 5 + .../selftests/bpf/bpf_testmod/bpf_testmod.c | 7 + .../bpf/prog_tests/module_attach_shadow.c | 120 ++++++++++++++++++ 6 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/module_attach_shadow.c -- 2.38.1