ugh forgot to cc Masami.. sorry, I can resend if needed jirka On Wed, Jul 07, 2021 at 09:46:12PM +0200, Jiri Olsa wrote: > hi, > adding bpf_get_func_ip helper that returns IP address of the > caller function for trampoline and krobe programs. > > There're 2 specific implementation of the bpf_get_func_ip > helper, one for trampoline progs and one for kprobe/kretprobe > progs. > > The trampoline helper call is replaced/inlined by verifier > with simple move instruction. The kprobe/kretprobe is actual > helper call that returns prepared caller address. > > Also available at: > https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git > bpf/get_func_ip > > v2 changes: > - use kprobe_running to get kprobe instead of cpu var [Masami] > - added support to add kprobe on function+offset > and test for that [Alan] > > thanks, > jirka > > > --- > Alan Maguire (1): > libbpf: allow specification of "kprobe/function+offset" > > Jiri Olsa (6): > bpf, x86: Store caller's ip in trampoline stack > bpf: Enable BPF_TRAMP_F_IP_ARG for trampolines with call_get_func_ip > bpf: Add bpf_get_func_ip helper for tracing programs > bpf: Add bpf_get_func_ip helper for kprobe programs > selftests/bpf: Add test for bpf_get_func_ip helper > selftests/bpf: Add test for bpf_get_func_ip in kprobe+offset probe > > arch/x86/net/bpf_jit_comp.c | 19 +++++++++++++++++++ > include/linux/bpf.h | 5 +++++ > include/linux/filter.h | 3 ++- > include/uapi/linux/bpf.h | 7 +++++++ > kernel/bpf/trampoline.c | 12 +++++++++--- > kernel/bpf/verifier.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > kernel/trace/bpf_trace.c | 32 ++++++++++++++++++++++++++++++++ > tools/include/uapi/linux/bpf.h | 7 +++++++ > tools/lib/bpf/libbpf.c | 20 +++++++++++++++++--- > tools/testing/selftests/bpf/prog_tests/get_func_ip_test.c | 42 ++++++++++++++++++++++++++++++++++++++++++ > tools/testing/selftests/bpf/progs/get_func_ip_test.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 11 files changed, 270 insertions(+), 7 deletions(-) > create mode 100644 tools/testing/selftests/bpf/prog_tests/get_func_ip_test.c > create mode 100644 tools/testing/selftests/bpf/progs/get_func_ip_test.c