On Mon, Sep 26, 2022 at 11:37 AM Nick Desaulniers ndesaulniers@google.com 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.