[patch 02/24] Kprobes - do not use kprobes mutex in arch code
Remove the kprobes mutex from kprobes.h, since it does not belong there. Also remove all use of this mutex in the architecture specific code, replacing it by a proper mutex lock/unlock in the architecture agnostic code. Signed-off-by: Mathieu Desnoyers <[EMAIL PROTECTED]> Acked-by: Ananth N Mavinakayanahalli <[EMAIL PROTECTED]> CC: [EMAIL PROTECTED] CC: [EMAIL PROTECTED] CC: [EMAIL PROTECTED] --- arch/ia64/kernel/kprobes.c|2 -- arch/powerpc/kernel/kprobes.c |2 -- arch/s390/kernel/kprobes.c|2 -- arch/x86/kernel/kprobes_32.c |2 -- arch/x86/kernel/kprobes_64.c |2 -- include/linux/kprobes.h |2 -- kernel/kprobes.c |2 ++ 7 files changed, 2 insertions(+), 12 deletions(-) Index: linux-2.6-lttng/include/linux/kprobes.h === --- linux-2.6-lttng.orig/include/linux/kprobes.h2007-12-10 09:53:27.0 -0500 +++ linux-2.6-lttng/include/linux/kprobes.h 2007-12-12 18:10:34.0 -0500 @@ -35,7 +35,6 @@ #include #include #include -#include #ifdef CONFIG_KPROBES #include @@ -183,7 +182,6 @@ static inline void kretprobe_assert(stru } extern spinlock_t kretprobe_lock; -extern struct mutex kprobe_mutex; extern int arch_prepare_kprobe(struct kprobe *p); extern void arch_arm_kprobe(struct kprobe *p); extern void arch_disarm_kprobe(struct kprobe *p); Index: linux-2.6-lttng/arch/x86/kernel/kprobes_32.c === --- linux-2.6-lttng.orig/arch/x86/kernel/kprobes_32.c 2007-12-10 09:53:27.0 -0500 +++ linux-2.6-lttng/arch/x86/kernel/kprobes_32.c2007-12-12 18:10:34.0 -0500 @@ -186,9 +186,7 @@ void __kprobes arch_disarm_kprobe(struct void __kprobes arch_remove_kprobe(struct kprobe *p) { - mutex_lock(_mutex); free_insn_slot(p->ainsn.insn, (p->ainsn.boostable == 1)); - mutex_unlock(_mutex); } static void __kprobes save_previous_kprobe(struct kprobe_ctlblk *kcb) Index: linux-2.6-lttng/kernel/kprobes.c === --- linux-2.6-lttng.orig/kernel/kprobes.c 2007-12-12 18:10:32.0 -0500 +++ linux-2.6-lttng/kernel/kprobes.c2007-12-12 18:10:34.0 -0500 @@ -644,7 +644,9 @@ valid_p: list_del_rcu(>list); kfree(old_p); } + mutex_lock(_mutex); arch_remove_kprobe(p); + mutex_unlock(_mutex); } else { mutex_lock(_mutex); if (p->break_handler) Index: linux-2.6-lttng/arch/ia64/kernel/kprobes.c === --- linux-2.6-lttng.orig/arch/ia64/kernel/kprobes.c 2007-12-12 18:06:06.0 -0500 +++ linux-2.6-lttng/arch/ia64/kernel/kprobes.c 2007-12-12 18:10:34.0 -0500 @@ -582,9 +582,7 @@ void __kprobes arch_disarm_kprobe(struct void __kprobes arch_remove_kprobe(struct kprobe *p) { - mutex_lock(_mutex); free_insn_slot(p->ainsn.insn, 0); - mutex_unlock(_mutex); } /* * We are resuming execution after a single step fault, so the pt_regs Index: linux-2.6-lttng/arch/powerpc/kernel/kprobes.c === --- linux-2.6-lttng.orig/arch/powerpc/kernel/kprobes.c 2007-12-10 09:53:27.0 -0500 +++ linux-2.6-lttng/arch/powerpc/kernel/kprobes.c 2007-12-12 18:10:34.0 -0500 @@ -88,9 +88,7 @@ void __kprobes arch_disarm_kprobe(struct void __kprobes arch_remove_kprobe(struct kprobe *p) { - mutex_lock(_mutex); free_insn_slot(p->ainsn.insn, 0); - mutex_unlock(_mutex); } static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) Index: linux-2.6-lttng/arch/s390/kernel/kprobes.c === --- linux-2.6-lttng.orig/arch/s390/kernel/kprobes.c 2007-12-10 09:53:27.0 -0500 +++ linux-2.6-lttng/arch/s390/kernel/kprobes.c 2007-12-12 18:10:34.0 -0500 @@ -220,9 +220,7 @@ void __kprobes arch_disarm_kprobe(struct void __kprobes arch_remove_kprobe(struct kprobe *p) { - mutex_lock(_mutex); free_insn_slot(p->ainsn.insn, 0); - mutex_unlock(_mutex); } static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) Index: linux-2.6-lttng/arch/x86/kernel/kprobes_64.c === --- linux-2.6-lttng.orig/arch/x86/kernel/kprobes_64.c 2007-12-10 09:53:27.0 -0500 +++ linux-2.6-lttng/arch/x86/kernel/kprobes_64.c2007-12-12 18:10:34.0 -0500 @@ -225,9 +225,7 @@ void __kprobes arch_disarm_kprobe(struct void __kprobes arch_remove_kprobe(struct kprobe *p) { - mutex_lock(_mutex); free_insn_slot(p->ainsn.insn, 0); - mutex_unlock(_mutex); } static void
[patch 02/24] Kprobes - do not use kprobes mutex in arch code
Remove the kprobes mutex from kprobes.h, since it does not belong there. Also remove all use of this mutex in the architecture specific code, replacing it by a proper mutex lock/unlock in the architecture agnostic code. Signed-off-by: Mathieu Desnoyers [EMAIL PROTECTED] Acked-by: Ananth N Mavinakayanahalli [EMAIL PROTECTED] CC: [EMAIL PROTECTED] CC: [EMAIL PROTECTED] CC: [EMAIL PROTECTED] --- arch/ia64/kernel/kprobes.c|2 -- arch/powerpc/kernel/kprobes.c |2 -- arch/s390/kernel/kprobes.c|2 -- arch/x86/kernel/kprobes_32.c |2 -- arch/x86/kernel/kprobes_64.c |2 -- include/linux/kprobes.h |2 -- kernel/kprobes.c |2 ++ 7 files changed, 2 insertions(+), 12 deletions(-) Index: linux-2.6-lttng/include/linux/kprobes.h === --- linux-2.6-lttng.orig/include/linux/kprobes.h2007-12-10 09:53:27.0 -0500 +++ linux-2.6-lttng/include/linux/kprobes.h 2007-12-12 18:10:34.0 -0500 @@ -35,7 +35,6 @@ #include linux/percpu.h #include linux/spinlock.h #include linux/rcupdate.h -#include linux/mutex.h #ifdef CONFIG_KPROBES #include asm/kprobes.h @@ -183,7 +182,6 @@ static inline void kretprobe_assert(stru } extern spinlock_t kretprobe_lock; -extern struct mutex kprobe_mutex; extern int arch_prepare_kprobe(struct kprobe *p); extern void arch_arm_kprobe(struct kprobe *p); extern void arch_disarm_kprobe(struct kprobe *p); Index: linux-2.6-lttng/arch/x86/kernel/kprobes_32.c === --- linux-2.6-lttng.orig/arch/x86/kernel/kprobes_32.c 2007-12-10 09:53:27.0 -0500 +++ linux-2.6-lttng/arch/x86/kernel/kprobes_32.c2007-12-12 18:10:34.0 -0500 @@ -186,9 +186,7 @@ void __kprobes arch_disarm_kprobe(struct void __kprobes arch_remove_kprobe(struct kprobe *p) { - mutex_lock(kprobe_mutex); free_insn_slot(p-ainsn.insn, (p-ainsn.boostable == 1)); - mutex_unlock(kprobe_mutex); } static void __kprobes save_previous_kprobe(struct kprobe_ctlblk *kcb) Index: linux-2.6-lttng/kernel/kprobes.c === --- linux-2.6-lttng.orig/kernel/kprobes.c 2007-12-12 18:10:32.0 -0500 +++ linux-2.6-lttng/kernel/kprobes.c2007-12-12 18:10:34.0 -0500 @@ -644,7 +644,9 @@ valid_p: list_del_rcu(p-list); kfree(old_p); } + mutex_lock(kprobe_mutex); arch_remove_kprobe(p); + mutex_unlock(kprobe_mutex); } else { mutex_lock(kprobe_mutex); if (p-break_handler) Index: linux-2.6-lttng/arch/ia64/kernel/kprobes.c === --- linux-2.6-lttng.orig/arch/ia64/kernel/kprobes.c 2007-12-12 18:06:06.0 -0500 +++ linux-2.6-lttng/arch/ia64/kernel/kprobes.c 2007-12-12 18:10:34.0 -0500 @@ -582,9 +582,7 @@ void __kprobes arch_disarm_kprobe(struct void __kprobes arch_remove_kprobe(struct kprobe *p) { - mutex_lock(kprobe_mutex); free_insn_slot(p-ainsn.insn, 0); - mutex_unlock(kprobe_mutex); } /* * We are resuming execution after a single step fault, so the pt_regs Index: linux-2.6-lttng/arch/powerpc/kernel/kprobes.c === --- linux-2.6-lttng.orig/arch/powerpc/kernel/kprobes.c 2007-12-10 09:53:27.0 -0500 +++ linux-2.6-lttng/arch/powerpc/kernel/kprobes.c 2007-12-12 18:10:34.0 -0500 @@ -88,9 +88,7 @@ void __kprobes arch_disarm_kprobe(struct void __kprobes arch_remove_kprobe(struct kprobe *p) { - mutex_lock(kprobe_mutex); free_insn_slot(p-ainsn.insn, 0); - mutex_unlock(kprobe_mutex); } static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) Index: linux-2.6-lttng/arch/s390/kernel/kprobes.c === --- linux-2.6-lttng.orig/arch/s390/kernel/kprobes.c 2007-12-10 09:53:27.0 -0500 +++ linux-2.6-lttng/arch/s390/kernel/kprobes.c 2007-12-12 18:10:34.0 -0500 @@ -220,9 +220,7 @@ void __kprobes arch_disarm_kprobe(struct void __kprobes arch_remove_kprobe(struct kprobe *p) { - mutex_lock(kprobe_mutex); free_insn_slot(p-ainsn.insn, 0); - mutex_unlock(kprobe_mutex); } static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) Index: linux-2.6-lttng/arch/x86/kernel/kprobes_64.c === --- linux-2.6-lttng.orig/arch/x86/kernel/kprobes_64.c 2007-12-10 09:53:27.0 -0500 +++ linux-2.6-lttng/arch/x86/kernel/kprobes_64.c2007-12-12 18:10:34.0 -0500 @@ -225,9 +225,7 @@ void __kprobes arch_disarm_kprobe(struct void __kprobes arch_remove_kprobe(struct