diff options
Diffstat (limited to 'arch/powerpc/kernel/kprobes.c')
-rw-r--r-- | arch/powerpc/kernel/kprobes.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index de79915452c8..c9329786073b 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c | |||
@@ -96,9 +96,10 @@ void __kprobes arch_disarm_kprobe(struct kprobe *p) | |||
96 | 96 | ||
97 | void __kprobes arch_remove_kprobe(struct kprobe *p) | 97 | void __kprobes arch_remove_kprobe(struct kprobe *p) |
98 | { | 98 | { |
99 | mutex_lock(&kprobe_mutex); | 99 | if (p->ainsn.insn) { |
100 | free_insn_slot(p->ainsn.insn, 0); | 100 | free_insn_slot(p->ainsn.insn, 0); |
101 | mutex_unlock(&kprobe_mutex); | 101 | p->ainsn.insn = NULL; |
102 | } | ||
102 | } | 103 | } |
103 | 104 | ||
104 | static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) | 105 | static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) |
@@ -316,7 +317,7 @@ static int __kprobes trampoline_probe_handler(struct kprobe *p, | |||
316 | /* | 317 | /* |
317 | * It is possible to have multiple instances associated with a given | 318 | * It is possible to have multiple instances associated with a given |
318 | * task either because an multiple functions in the call path | 319 | * task either because an multiple functions in the call path |
319 | * have a return probe installed on them, and/or more then one return | 320 | * have a return probe installed on them, and/or more than one return |
320 | * return probe was registered for a target function. | 321 | * return probe was registered for a target function. |
321 | * | 322 | * |
322 | * We can handle this because: | 323 | * We can handle this because: |