All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv4 bpf-next 0/8] bpf, x86: Add bpf_get_func_ip helper
@ 2021-07-14  9:43 Jiri Olsa
  2021-07-14  9:43 ` [PATCHv4 bpf-next 1/8] bpf, x86: Store caller's ip in trampoline stack Jiri Olsa
                   ` (7 more replies)
  0 siblings, 8 replies; 16+ messages in thread
From: Jiri Olsa @ 2021-07-14  9:43 UTC (permalink / raw)
  To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko
  Cc: netdev, bpf, Martin KaFai Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh, Masami Hiramatsu, Alan Maguire

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

v4 changes:
  - dropped jit/x86 check for get_func_ip tracing check [Alexei]
  - added code to bpf_get_func_ip_tracing [Alexei]
    and tested that it works without inlining [Alexei]
  - changed has_get_func_ip to check_get_func_ip [Andrii]
  - replaced test assert loop with explicit asserts [Andrii]
  - adde bpf_program__attach_kprobe_opts function
    and use it for offset setup [Andrii]
  - used bpf_program__set_autoload(false) for test6 [Andrii]
  - added Masami's ack

v3 changes:
  - resend with Masami in cc and v3 in each patch subject

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 (7):
      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
      libbpf: Add bpf_program__attach_kprobe_opts function
      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                                     | 45 +++++++++++++++++++++++++++++++++++++++++++++
 kernel/trace/bpf_trace.c                                  | 31 +++++++++++++++++++++++++++++++
 tools/include/uapi/linux/bpf.h                            |  7 +++++++
 tools/lib/bpf/libbpf.c                                    | 56 ++++++++++++++++++++++++++++++++++++++++++++++----------
 tools/testing/selftests/bpf/prog_tests/get_func_ip_test.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tools/testing/selftests/bpf/progs/get_func_ip_test.c      | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 11 files changed, 297 insertions(+), 14 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


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

end of thread, other threads:[~2021-07-18 21:30 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-07-14  9:43 [PATCHv4 bpf-next 0/8] bpf, x86: Add bpf_get_func_ip helper Jiri Olsa
2021-07-14  9:43 ` [PATCHv4 bpf-next 1/8] bpf, x86: Store caller's ip in trampoline stack Jiri Olsa
2021-07-14  9:43 ` [PATCHv4 bpf-next 2/8] bpf: Enable BPF_TRAMP_F_IP_ARG for trampolines with call_get_func_ip Jiri Olsa
2021-07-14  9:43 ` [PATCHv4 bpf-next 3/8] bpf: Add bpf_get_func_ip helper for tracing programs Jiri Olsa
2021-07-16  1:09   ` Alexei Starovoitov
2021-07-18 19:30     ` Jiri Olsa
2021-07-14  9:43 ` [PATCHv4 bpf-next 4/8] bpf: Add bpf_get_func_ip helper for kprobe programs Jiri Olsa
2021-07-14  9:43 ` [PATCHv4 bpf-next 5/8] selftests/bpf: Add test for bpf_get_func_ip helper Jiri Olsa
2021-07-14  9:43 ` [PATCHv4 bpf-next 6/8] libbpf: Add bpf_program__attach_kprobe_opts function Jiri Olsa
2021-07-17  1:41   ` Andrii Nakryiko
2021-07-18 19:32     ` Jiri Olsa
2021-07-18 21:30       ` Andrii Nakryiko
2021-07-14  9:43 ` [PATCHv4 bpf-next 7/8] libbpf: Allow specification of "kprobe/function+offset" Jiri Olsa
2021-07-17  1:42   ` Andrii Nakryiko
2021-07-18 19:32     ` Jiri Olsa
2021-07-14  9:44 ` [PATCHv4 bpf-next 8/8] selftests/bpf: Add test for bpf_get_func_ip in kprobe+offset probe Jiri Olsa

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.