Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

s390/kprobes: enable kretprobes framepointer verification

Use regs->gprs[15] for framepointer verification. This enables
additional sanity checks for nested kretprobes.

Reviewed-by: Tobias Huschle <huschle@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>

+4 -4
+4 -4
arch/s390/kernel/kprobes.c
··· 284 284 285 285 void arch_prepare_kretprobe(struct kretprobe_instance *ri, struct pt_regs *regs) 286 286 { 287 - ri->ret_addr = (kprobe_opcode_t *) regs->gprs[14]; 288 - ri->fp = NULL; 287 + ri->ret_addr = (kprobe_opcode_t *)regs->gprs[14]; 288 + ri->fp = (void *)regs->gprs[15]; 289 289 290 290 /* Replace the return addr with trampoline addr */ 291 - regs->gprs[14] = (unsigned long) &__kretprobe_trampoline; 291 + regs->gprs[14] = (unsigned long)&__kretprobe_trampoline; 292 292 } 293 293 NOKPROBE_SYMBOL(arch_prepare_kretprobe); 294 294 ··· 385 385 */ 386 386 void trampoline_probe_handler(struct pt_regs *regs) 387 387 { 388 - kretprobe_trampoline_handler(regs, NULL); 388 + kretprobe_trampoline_handler(regs, (void *)regs->gprs[15]); 389 389 } 390 390 NOKPROBE_SYMBOL(trampoline_probe_handler); 391 391