|
@@ -271,6 +271,7 @@ void __kprobes kprobe_handler(struct pt_regs *regs)
|
|
|
switch (kcb->kprobe_status) {
|
|
|
case KPROBE_HIT_ACTIVE:
|
|
|
case KPROBE_HIT_SSDONE:
|
|
|
+ case KPROBE_HIT_SS:
|
|
|
/* A pre- or post-handler probe got us here. */
|
|
|
kprobes_inc_nmissed_count(p);
|
|
|
save_previous_kprobe(kcb);
|
|
@@ -279,6 +280,11 @@ void __kprobes kprobe_handler(struct pt_regs *regs)
|
|
|
singlestep(p, regs, kcb);
|
|
|
restore_previous_kprobe(kcb);
|
|
|
break;
|
|
|
+ case KPROBE_REENTER:
|
|
|
+ /* A nested probe was hit in FIQ, it is a BUG */
|
|
|
+ pr_warn("Unrecoverable kprobe detected at %p.\n",
|
|
|
+ p->addr);
|
|
|
+ /* fall through */
|
|
|
default:
|
|
|
/* impossible cases */
|
|
|
BUG();
|