Change kretprobe_trampoline to make a space for regs->ARM_pc so that
kretprobe_trampoline_handler can call instruction_pointer_set()
safely.

Signed-off-by: Masami Hiramatsu <mhira...@kernel.org>
---
 arch/arm/probes/kprobes/core.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm/probes/kprobes/core.c b/arch/arm/probes/kprobes/core.c
index 1782b41df095..5f3c2b42787f 100644
--- a/arch/arm/probes/kprobes/core.c
+++ b/arch/arm/probes/kprobes/core.c
@@ -397,11 +397,13 @@ int __kprobes kprobe_exceptions_notify(struct 
notifier_block *self,
 void __naked __kprobes kretprobe_trampoline(void)
 {
        __asm__ __volatile__ (
+               "sub    sp, sp, #16             \n\t"
                "stmdb  sp!, {r0 - r11}         \n\t"
                "mov    r0, sp                  \n\t"
                "bl     trampoline_handler      \n\t"
                "mov    lr, r0                  \n\t"
                "ldmia  sp!, {r0 - r11}         \n\t"
+               "add    sp, sp, #16             \n\t"
 #ifdef CONFIG_THUMB2_KERNEL
                "bx     lr                      \n\t"
 #else

Reply via email to