On Thu, Aug 11, 2022 at 2:15 AM Jiri Olsa <jolsa@xxxxxxxxxx> wrote: > > hi, > Martynas reported bpf_get_func_ip returning +4 address when > CONFIG_X86_KERNEL_IBT option is enabled and I found there are > some failing bpf tests when this option is enabled. > > The CONFIG_X86_KERNEL_IBT option adds endbr instruction at the > function entry, so the idea is to 'fix' entry ip for kprobe_multi > and trampoline probes, because they are placed on the function > entry. > > v2 changes: > - change kprobes get_func_ip to return zero for kprobes > attached within the function body [Andrii] > - detect IBT config and properly test kprobe with offset > [Andrii] > > v1 changes: > - read previous instruction in kprobe_multi link handler > and adjust entry_ip for CONFIG_X86_KERNEL_IBT option > - split first patch into 2 separate changes > - update changelogs > > thanks, > jirka > > > --- > Jiri Olsa (6): > kprobes: Add new KPROBE_FLAG_ON_FUNC_ENTRY kprobe flag > ftrace: Keep the resolved addr in kallsyms_callback > bpf: Use given function address for trampoline ip arg > bpf: Adjust kprobe_multi entry_ip for CONFIG_X86_KERNEL_IBT > bpf: Return value in kprobe get_func_ip only for entry address > selftests/bpf: Fix get_func_ip offset test for CONFIG_X86_KERNEL_IBT > > arch/x86/net/bpf_jit_comp.c | 9 ++++----- > include/linux/kprobes.h | 1 + > kernel/kprobes.c | 6 +++++- > kernel/trace/bpf_trace.c | 15 ++++++++++++++- > kernel/trace/ftrace.c | 3 +-- > tools/testing/selftests/bpf/prog_tests/get_func_ip_test.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++----------- > tools/testing/selftests/bpf/progs/get_func_ip_test.c | 22 ++++++++++------------ > tools/testing/selftests/bpf/progs/kprobe_multi.c | 4 +--- > 8 files changed, 87 insertions(+), 35 deletions(-) Overall LGTM, please address Peter's questions and request for some more comments and context. Few nits to simplify selftests further, but looks great. Thanks!