BPF List
 help / color / mirror / Atom feed
* [PATCH bpf-next 0/2] Fix attaching fentry/fexit/fmod_ret/lsm to modules
@ 2022-11-28  7:26 Viktor Malik
  2022-11-28  7:26 ` [PATCH bpf-next 1/2] bpf: " Viktor Malik
  2022-11-28  7:26 ` [PATCH bpf-next 2/2] bpf/selftests: Test fentry attachment to shadowed functions Viktor Malik
  0 siblings, 2 replies; 6+ messages in thread
From: Viktor Malik @ 2022-11-28  7:26 UTC (permalink / raw)
  To: bpf
  Cc: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
	Martin KaFai Lau, Song Liu, Yonghong Song, John Fastabend,
	KP Singh, Stanislav Fomichev, Hao Luo, Jiri Olsa, Viktor Malik

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


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-11-28 21:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-28  7:26 [PATCH bpf-next 0/2] Fix attaching fentry/fexit/fmod_ret/lsm to modules Viktor Malik
2022-11-28  7:26 ` [PATCH bpf-next 1/2] bpf: " Viktor Malik
2022-11-28  9:07   ` Jiri Olsa
2022-11-28 20:06     ` Hao Luo
2022-11-28  7:26 ` [PATCH bpf-next 2/2] bpf/selftests: Test fentry attachment to shadowed functions Viktor Malik
2022-11-28 21:14   ` Hao Luo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox