|
@@ -248,11 +248,6 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
|
|
|
prepare_singlestep(p, regs);
|
|
|
kcb->kprobe_status = KPROBE_REENTER;
|
|
|
return 1;
|
|
|
- } else {
|
|
|
- p = __this_cpu_read(current_kprobe);
|
|
|
- if (p->break_handler && p->break_handler(p, regs)) {
|
|
|
- goto ss_probe;
|
|
|
- }
|
|
|
}
|
|
|
goto no_kprobe;
|
|
|
}
|
|
@@ -281,7 +276,6 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
|
|
|
/* handler has already set things up, so skip ss setup */
|
|
|
return 1;
|
|
|
|
|
|
-ss_probe:
|
|
|
prepare_singlestep(p, regs);
|
|
|
kcb->kprobe_status = KPROBE_HIT_SS;
|
|
|
return 1;
|
|
@@ -508,14 +502,8 @@ int __kprobes kprobe_exceptions_notify(struct notifier_block *self,
|
|
|
if (post_kprobe_handler(args->regs))
|
|
|
ret = NOTIFY_STOP;
|
|
|
} else {
|
|
|
- if (kprobe_handler(args->regs)) {
|
|
|
+ if (kprobe_handler(args->regs))
|
|
|
ret = NOTIFY_STOP;
|
|
|
- } else {
|
|
|
- p = __this_cpu_read(current_kprobe);
|
|
|
- if (p->break_handler &&
|
|
|
- p->break_handler(p, args->regs))
|
|
|
- ret = NOTIFY_STOP;
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
}
|