Commit 09bc20c8 authored by Vasily Gorbik's avatar Vasily Gorbik

s390/kprobes: enable kretprobes framepointer verification

Use regs->gprs[15] for framepointer verification. This enables
additional sanity checks for nested kretprobes.
Reviewed-by: default avatarTobias Huschle <huschle@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent 0b452520
...@@ -284,11 +284,11 @@ NOKPROBE_SYMBOL(pop_kprobe); ...@@ -284,11 +284,11 @@ NOKPROBE_SYMBOL(pop_kprobe);
void arch_prepare_kretprobe(struct kretprobe_instance *ri, struct pt_regs *regs) void arch_prepare_kretprobe(struct kretprobe_instance *ri, struct pt_regs *regs)
{ {
ri->ret_addr = (kprobe_opcode_t *) regs->gprs[14]; ri->ret_addr = (kprobe_opcode_t *)regs->gprs[14];
ri->fp = NULL; ri->fp = (void *)regs->gprs[15];
/* Replace the return addr with trampoline addr */ /* Replace the return addr with trampoline addr */
regs->gprs[14] = (unsigned long) &__kretprobe_trampoline; regs->gprs[14] = (unsigned long)&__kretprobe_trampoline;
} }
NOKPROBE_SYMBOL(arch_prepare_kretprobe); NOKPROBE_SYMBOL(arch_prepare_kretprobe);
...@@ -385,7 +385,7 @@ NOKPROBE_SYMBOL(arch_kretprobe_fixup_return); ...@@ -385,7 +385,7 @@ NOKPROBE_SYMBOL(arch_kretprobe_fixup_return);
*/ */
void trampoline_probe_handler(struct pt_regs *regs) void trampoline_probe_handler(struct pt_regs *regs)
{ {
kretprobe_trampoline_handler(regs, NULL); kretprobe_trampoline_handler(regs, (void *)regs->gprs[15]);
} }
NOKPROBE_SYMBOL(trampoline_probe_handler); NOKPROBE_SYMBOL(trampoline_probe_handler);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment