powerpc/kprobes: Use preempt_enable() rather than the no_resched variant
authorNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Thu, 20 Oct 2022 17:28:59 +0000 (22:58 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 24 Nov 2022 12:31:49 +0000 (23:31 +1100)
preempt_enable_no_resched() is just the same as preempt_enable() when we
are in a irqs disabled context. kprobe_handler() and the post/fault
handlers are all called with irqs disabled. As such, convert those to
just use preempt_enable().

Reported-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/72639f75fe66f931ec8c2165276ffbfb0fe1006f.1666262278.git.naveen.n.rao@linux.vnet.ibm.com
arch/powerpc/kernel/kprobes.c

index 88f42de..86ca5a6 100644 (file)
@@ -369,7 +369,7 @@ int kprobe_handler(struct pt_regs *regs)
 
                        if (ret > 0) {
                                restore_previous_kprobe(kcb);
-                               preempt_enable_no_resched();
+                               preempt_enable();
                                return 1;
                        }
                }
@@ -382,7 +382,7 @@ int kprobe_handler(struct pt_regs *regs)
        if (p->pre_handler && p->pre_handler(p, regs)) {
                /* handler changed execution path, so skip ss setup */
                reset_current_kprobe();
-               preempt_enable_no_resched();
+               preempt_enable();
                return 1;
        }
 
@@ -395,7 +395,7 @@ int kprobe_handler(struct pt_regs *regs)
 
                        kcb->kprobe_status = KPROBE_HIT_SSDONE;
                        reset_current_kprobe();
-                       preempt_enable_no_resched();
+                       preempt_enable();
                        return 1;
                }
        }
@@ -404,7 +404,7 @@ int kprobe_handler(struct pt_regs *regs)
        return 1;
 
 no_kprobe:
-       preempt_enable_no_resched();
+       preempt_enable();
        return ret;
 }
 NOKPROBE_SYMBOL(kprobe_handler);
@@ -490,7 +490,7 @@ int kprobe_post_handler(struct pt_regs *regs)
        }
        reset_current_kprobe();
 out:
-       preempt_enable_no_resched();
+       preempt_enable();
 
        /*
         * if somebody else is singlestepping across a probe point, msr
@@ -529,7 +529,7 @@ int kprobe_fault_handler(struct pt_regs *regs, int trapnr)
                        restore_previous_kprobe(kcb);
                else
                        reset_current_kprobe();
-               preempt_enable_no_resched();
+               preempt_enable();
                break;
        case KPROBE_HIT_ACTIVE:
        case KPROBE_HIT_SSDONE: