Переглянути джерело

[PATCH] ppc64: fix up()/down() usage for kprobe_mutex

The incorrect kprobe_mutex usage on x86_64 had percolated to ppc64 too.
First noticed by Yanmin Zhang.

Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Ananth N Mavinakayanahalli 19 роки тому
батько
коміт
2d8ab6ad6e
1 змінених файлів з 4 додано та 4 видалено
  1. 4 4
      arch/ppc64/kernel/kprobes.c

+ 4 - 4
arch/ppc64/kernel/kprobes.c

@@ -59,9 +59,9 @@ int __kprobes arch_prepare_kprobe(struct kprobe *p)
 
 
 	/* insn must be on a special executable page on ppc64 */
 	/* insn must be on a special executable page on ppc64 */
 	if (!ret) {
 	if (!ret) {
-		up(&kprobe_mutex);
-		p->ainsn.insn = get_insn_slot();
 		down(&kprobe_mutex);
 		down(&kprobe_mutex);
+		p->ainsn.insn = get_insn_slot();
+		up(&kprobe_mutex);
 		if (!p->ainsn.insn)
 		if (!p->ainsn.insn)
 			ret = -ENOMEM;
 			ret = -ENOMEM;
 	}
 	}
@@ -90,9 +90,9 @@ void __kprobes arch_disarm_kprobe(struct kprobe *p)
 
 
 void __kprobes arch_remove_kprobe(struct kprobe *p)
 void __kprobes arch_remove_kprobe(struct kprobe *p)
 {
 {
-	up(&kprobe_mutex);
-	free_insn_slot(p->ainsn.insn);
 	down(&kprobe_mutex);
 	down(&kprobe_mutex);
+	free_insn_slot(p->ainsn.insn);
+	up(&kprobe_mutex);
 }
 }
 
 
 static inline void prepare_singlestep(struct kprobe *p, struct pt_regs *regs)
 static inline void prepare_singlestep(struct kprobe *p, struct pt_regs *regs)