Hello, These patches fixes the ORC unwinder to unwind optprobe trampoline code on the stack correctly. This patchset is based on the kretporbe and stacktrace fix series v5 which I sent last week. https://lore.kernel.org/bpf/161676170650.330141.6214727134265514123.stgit@devnote2/ Note that I just confirmed the it fixes the case where the stacktrace called from the optprobe handler. So this should be carefully reviewed. Here is the test code; cd /sys/kernel/debug/tracing echo > trace echo p full_proxy_read+5 >> kprobe_events echo 1 > events/kprobes/enable sleep 1 # wait for optimization echo stacktrace:1 > events/kprobes/p_full_proxy_read_5/trigger echo 1 > options/sym-offset cat /sys/kernel/debug/kprobes/list Without this, cat-138 [001] ...1 6.567662: p_full_proxy_read_5: (full_proxy_read+0x5/0x80) cat-138 [001] ...1 6.567711: <stack trace> => kprobe_trace_func+0x1d0/0x2c0 => kprobe_dispatcher+0x39/0x60 => opt_pre_handler+0x4f/0x80 => optimized_callback+0xc3/0xf0 => 0xffffffffa0006032 => 0 => 0 With this patch, cat-137 [007] ...1 17.542848: p_full_proxy_read_5: (full_proxy_read+0x5/0x80) cat-137 [007] ...1 17.542963: <stack trace> => kprobe_trace_func+0x1d0/0x2c0 => kprobe_dispatcher+0x39/0x60 => opt_pre_handler+0x4f/0x80 => optimized_callback+0xc3/0xf0 => full_proxy_read+0x5/0x80 => vfs_read+0xab/0x1a0 => ksys_read+0x5f/0xe0 => do_syscall_64+0x33/0x40 => entry_SYSCALL_64_after_hwframe+0x44/0xae => 0 => 0 Thank you, --- Masami Hiramatsu (3): x86/kprobes: Add ORC information to optprobe template kprobes: Add functions to find instruction buffer entry address x86/kprobes,orc: Unwind optprobe trampoline correctly arch/x86/include/asm/kprobes.h | 6 +++ arch/x86/kernel/kprobes/opt.c | 72 +++++++++++++++++++++++++++++++++++++--- arch/x86/kernel/unwind_orc.c | 15 +++++++- include/linux/kprobes.h | 8 ++++ kernel/kprobes.c | 25 ++++++++++---- 5 files changed, 111 insertions(+), 15 deletions(-) -- Masami Hiramatsu (Linaro) <mhiramat@xxxxxxxxxx>