To simplify the stacktrace with pt_regs from kretprobe handler,
set the correct return address to the instruction pointer in
the pt_regs before calling kretprobe handlers.

Suggested-by: Josh Poimboeuf <jpoim...@redhat.com>
Signed-off-by: Masami Hiramatsu <mhira...@kernel.org>
---
 kernel/kprobes.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/kernel/kprobes.c b/kernel/kprobes.c
index 2550521ff64d..51d0057382a5 100644
--- a/kernel/kprobes.c
+++ b/kernel/kprobes.c
@@ -1897,6 +1897,9 @@ unsigned long __kretprobe_trampoline_handler(struct 
pt_regs *regs,
                BUG_ON(1);
        }
 
+       /* Set the instruction pointer to the correct address */
+       instruction_pointer_set(regs, correct_ret_addr);
+
        /* Run them. */
        first = current->kretprobe_instances.first;
        while (first) {

Reply via email to