diff options
Diffstat (limited to 'arch/s390/kernel/kprobes.c')
-rw-r--r-- | arch/s390/kernel/kprobes.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/s390/kernel/kprobes.c b/arch/s390/kernel/kprobes.c index 569079ec4ff0..a01cf0284db2 100644 --- a/arch/s390/kernel/kprobes.c +++ b/arch/s390/kernel/kprobes.c | |||
@@ -218,9 +218,10 @@ void __kprobes arch_disarm_kprobe(struct kprobe *p) | |||
218 | 218 | ||
219 | void __kprobes arch_remove_kprobe(struct kprobe *p) | 219 | void __kprobes arch_remove_kprobe(struct kprobe *p) |
220 | { | 220 | { |
221 | mutex_lock(&kprobe_mutex); | 221 | if (p->ainsn.insn) { |
222 | free_insn_slot(p->ainsn.insn, 0); | 222 | free_insn_slot(p->ainsn.insn, 0); |
223 | mutex_unlock(&kprobe_mutex); | 223 | p->ainsn.insn = NULL; |
224 | } | ||
224 | } | 225 | } |
225 | 226 | ||
226 | static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) | 227 | static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) |
@@ -381,7 +382,7 @@ static int __kprobes trampoline_probe_handler(struct kprobe *p, | |||
381 | /* | 382 | /* |
382 | * It is possible to have multiple instances associated with a given | 383 | * It is possible to have multiple instances associated with a given |
383 | * task either because an multiple functions in the call path | 384 | * task either because an multiple functions in the call path |
384 | * have a return probe installed on them, and/or more then one return | 385 | * have a return probe installed on them, and/or more than one return |
385 | * return probe was registered for a target function. | 386 | * return probe was registered for a target function. |
386 | * | 387 | * |
387 | * We can handle this because: | 388 | * We can handle this because: |