]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/s390/kernel/kprobes.c
stop_machine: Wean existing callers off stop_machine_run()
[linux-2.6-omap-h63xx.git] / arch / s390 / kernel / kprobes.c
index ed04d1372d5d0c536b4a24713bf10d041bc79458..569079ec4ff004f010d64df7d746b0a01caff44c 100644 (file)
@@ -41,10 +41,8 @@ int __kprobes arch_prepare_kprobe(struct kprobe *p)
        if (is_prohibited_opcode((kprobe_opcode_t *) p->addr))
                return -EINVAL;
 
-       if ((unsigned long)p->addr & 0x01) {
-               printk("Attempt to register kprobe at an unaligned address\n");
+       if ((unsigned long)p->addr & 0x01)
                return -EINVAL;
-               }
 
        /* Use the get_insn_slot() facility for correctness */
        if (!(p->ainsn.insn = get_insn_slot()))
@@ -199,7 +197,7 @@ void __kprobes arch_arm_kprobe(struct kprobe *p)
        args.new = BREAKPOINT_INSTRUCTION;
 
        kcb->kprobe_status = KPROBE_SWAP_INST;
-       stop_machine_run(swap_instruction, &args, NR_CPUS);
+       stop_machine(swap_instruction, &args, NULL);
        kcb->kprobe_status = status;
 }
 
@@ -214,7 +212,7 @@ void __kprobes arch_disarm_kprobe(struct kprobe *p)
        args.new = p->opcode;
 
        kcb->kprobe_status = KPROBE_SWAP_INST;
-       stop_machine_run(swap_instruction, &args, NR_CPUS);
+       stop_machine(swap_instruction, &args, NULL);
        kcb->kprobe_status = status;
 }
 
@@ -272,7 +270,6 @@ static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs,
        __ctl_store(kcb->kprobe_saved_ctl, 9, 11);
 }
 
-/* Called with kretprobe_lock held */
 void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri,
                                        struct pt_regs *regs)
 {
@@ -334,7 +331,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
                 * No kprobe at this address. The fault has not been
                 * caused by a kprobe breakpoint. The race of breakpoint
                 * vs. kprobe remove does not exist because on s390 we
-                * use stop_machine_run to arm/disarm the breakpoints.
+                * use stop_machine to arm/disarm the breakpoints.
                 */
                goto no_kprobe;
 
@@ -379,8 +376,7 @@ static int __kprobes trampoline_probe_handler(struct kprobe *p,
        unsigned long trampoline_address = (unsigned long)&kretprobe_trampoline;
 
        INIT_HLIST_HEAD(&empty_rp);
-       spin_lock_irqsave(&kretprobe_lock, flags);
-       head = kretprobe_inst_table_head(current);
+       kretprobe_hash_lock(current, &head, &flags);
 
        /*
         * It is possible to have multiple instances associated with a given
@@ -419,7 +415,7 @@ static int __kprobes trampoline_probe_handler(struct kprobe *p,
        regs->psw.addr = orig_ret_address | PSW_ADDR_AMODE;
 
        reset_current_kprobe();
-       spin_unlock_irqrestore(&kretprobe_lock, flags);
+       kretprobe_hash_unlock(current, &flags);
        preempt_enable_no_resched();
 
        hlist_for_each_entry_safe(ri, node, tmp, &empty_rp, hlist) {