On Mon, Sep 26, 2022 at 11:37 AM Nick Desaulniers <ndesaulniers@xxxxxxxxxx> wrote: > > diff --git a/arch/arm/probes/kprobes/core.c b/arch/arm/probes/kprobes/core.c > index 1435b508aa36..17d7e0259e63 100644 > --- a/arch/arm/probes/kprobes/core.c > +++ b/arch/arm/probes/kprobes/core.c > @@ -375,58 +375,10 @@ int __kprobes kprobe_exceptions_notify(struct notifier_block *self, > return NOTIFY_DONE; > } > > -/* > - * When a retprobed function returns, trampoline_handler() is called, > - * calling the kretprobe's handler. We construct a struct pt_regs to > - * give a view of registers r0-r11, sp, lr, and pc to the user > - * return-handler. This is not a complete pt_regs structure, but that > - * should be enough for stacktrace from the return handler with or > - * without pt_regs. > - */ > -void __naked __kprobes __kretprobe_trampoline(void) > -{ > - __asm__ __volatile__ ( > - "ldr lr, =__kretprobe_trampoline \n\t" > -#ifdef CONFIG_FRAME_POINTER > - /* __kretprobe_trampoline makes a framepointer on pt_regs. */ > -#ifdef CONFIG_CC_IS_CLANG > - "stmdb sp, {sp, lr, pc} \n\t" > - "sub sp, sp, #12 \n\t" > - /* In clang case, pt_regs->ip = lr. */ > - "stmdb sp!, {r0 - r11, lr} \n\t" > - /* fp points regs->r11 (fp) */ > - "add fp, sp, #44 \n\t" > -#else /* !CONFIG_CC_IS_CLANG */ > - /* In gcc case, pt_regs->ip = fp. */ > - "stmdb sp, {fp, sp, lr, pc} \n\t" > - "sub sp, sp, #16 \n\t" > - "stmdb sp!, {r0 - r11} \n\t" > - /* fp points regs->r15 (pc) */ > - "add fp, sp, #60 \n\t" > -#endif /* CONFIG_CC_IS_CLANG */ > -#else /* !CONFIG_FRAME_POINTER */ > - /* store SP, LR on stack and add EABI unwind hint */ > - "stmdb sp, {sp, lr, pc} \n\t" > - ".save {sp, lr, pc} \n\t" > - "sub sp, sp, #16 \n\t" > - "stmdb sp!, {r0 - r11} \n\t" > - ".pad #52 \n\t" > -#endif /* CONFIG_FRAME_POINTER */ > - "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 > - "mov pc, lr \n\t" > -#endif > - : : : "memory"); > -} > +/*void __kretprobe_trampoline(void);*/ ^ d'oh, that commented out declaration should have been removed. Will wait for feedback wrt. usage of UNWIND and Fixes tag to see if a v2 is necessary, vs what can be modified if/when applied by maintainers. -- Thanks, ~Nick Desaulniers