Revert "ia64: kprobes: Fix to pass correct trampoline address to the handler"
authorMasami Hiramatsu <mhiramat@kernel.org>
Tue, 26 Apr 2022 14:26:04 +0000 (23:26 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 1 May 2022 15:00:37 +0000 (17:00 +0200)
This reverts commit f5f96e3643dc33d6117cf7047e73512046e4858b.

The commit f5f96e3643dc ("ia64: kprobes: Fix to pass correct trampoline
address to the handler") was wrongly backported. It involves another
commit which is a part of another bigger series, so it should not be
backported to the stable tree.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/ia64/kernel/kprobes.c

index 9cfd3ac027b711d89ace65554e454a9073b115f7..8207b897b49dd5197dcb56d8da41253e0b8d9e66 100644 (file)
@@ -411,8 +411,7 @@ static void kretprobe_trampoline(void)
 
 int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
 {
-       regs->cr_iip = __kretprobe_trampoline_handler(regs,
-               dereference_function_descriptor(kretprobe_trampoline), NULL);
+       regs->cr_iip = __kretprobe_trampoline_handler(regs, kretprobe_trampoline, NULL);
        /*
         * By returning a non-zero value, we are telling
         * kprobe_handler() that we don't want the post_handler
@@ -428,7 +427,7 @@ void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri,
        ri->fp = NULL;
 
        /* Replace the return addr with trampoline addr */
-       regs->b0 = (unsigned long)dereference_function_descriptor(kretprobe_trampoline);
+       regs->b0 = ((struct fnptr *)kretprobe_trampoline)->ip;
 }
 
 /* Check the instruction in the slot is break */
@@ -958,14 +957,14 @@ static struct kprobe trampoline_p = {
 int __init arch_init_kprobes(void)
 {
        trampoline_p.addr =
-               dereference_function_descriptor(kretprobe_trampoline);
+               (kprobe_opcode_t *)((struct fnptr *)kretprobe_trampoline)->ip;
        return register_kprobe(&trampoline_p);
 }
 
 int __kprobes arch_trampoline_kprobe(struct kprobe *p)
 {
        if (p->addr ==
-               dereference_function_descriptor(kretprobe_trampoline))
+               (kprobe_opcode_t *)((struct fnptr *)kretprobe_trampoline)->ip)
                return 1;
 
        return 0;