diff options
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/kernel/kprobes.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/arch/s390/kernel/kprobes.c b/arch/s390/kernel/kprobes.c index a466bab6677e..8af549e95730 100644 --- a/arch/s390/kernel/kprobes.c +++ b/arch/s390/kernel/kprobes.c | |||
@@ -337,21 +337,14 @@ static int __kprobes kprobe_handler(struct pt_regs *regs) | |||
337 | } | 337 | } |
338 | 338 | ||
339 | p = get_kprobe(addr); | 339 | p = get_kprobe(addr); |
340 | if (!p) { | 340 | if (!p) |
341 | if (*addr != BREAKPOINT_INSTRUCTION) { | 341 | /* |
342 | /* | 342 | * No kprobe at this address. The fault has not been |
343 | * The breakpoint instruction was removed right | 343 | * caused by a kprobe breakpoint. The race of breakpoint |
344 | * after we hit it. Another cpu has removed | 344 | * vs. kprobe remove does not exist because on s390 we |
345 | * either a probepoint or a debugger breakpoint | 345 | * use stop_machine_run to arm/disarm the breakpoints. |
346 | * at this address. In either case, no further | 346 | */ |
347 | * handling of this interrupt is appropriate. | ||
348 | * | ||
349 | */ | ||
350 | ret = 1; | ||
351 | } | ||
352 | /* Not one of ours: let kernel handle it */ | ||
353 | goto no_kprobe; | 347 | goto no_kprobe; |
354 | } | ||
355 | 348 | ||
356 | kcb->kprobe_status = KPROBE_HIT_ACTIVE; | 349 | kcb->kprobe_status = KPROBE_HIT_ACTIVE; |
357 | set_current_kprobe(p, regs, kcb); | 350 | set_current_kprobe(p, regs, kcb); |