Messages in this thread | ![/](/images/icornerl.gif) | | Date | Fri, 28 Aug 2020 15:37:18 +0200 | From | peterz@infradea ... | Subject | Re: [PATCH v4 04/23] arm64: kprobes: Use generic kretprobe trampoline handler |
| |
On Fri, Aug 28, 2020 at 02:31:31PM +0100, Mark Rutland wrote: > Hi, > > On Fri, Aug 28, 2020 at 09:27:22PM +0900, Masami Hiramatsu wrote: > > Use the generic kretprobe trampoline handler, and use the > > kernel_stack_pointer(regs) for framepointer verification. > > > > Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> > > --- > > arch/arm64/kernel/probes/kprobes.c | 78 +----------------------------------- > > 1 file changed, 3 insertions(+), 75 deletions(-) > > > + return (void *)kretprobe_trampoline_handler(regs, &kretprobe_trampoline, > > + (void *)kernel_stack_pointer(regs)); > > } > > > > void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri, > > struct pt_regs *regs) > > { > > ri->ret_addr = (kprobe_opcode_t *)regs->regs[30]; > > + ri->fp = (void *)kernel_stack_pointer(regs); > > This is probably a nomenclature problem, but what exactly is > kretprobe_instance::fp used for? > > I ask because arm64's frame pointer lives in x29 (and is not necessarily > the same as the stack pointer at function boundaries), so the naming > is potentially misleading and possibly worth a comment or rename.
IIUC ri->rp is used for matching up the frame between the moment we install the return trampoline on the stack and actually hitting that trampoline.
| ![\](/images/icornerr.gif) |