Abhishek Sagar wrote:
> Masami Hiramatsu wrote:
...
> Done. You should find the desired changed in this patch.

Well done!
This cleans it up very well.
I have just one more comment.

> @@ -463,14 +487,26 @@ static int __kprobes reenter_kprobe(struct kprobe *p, 
> struct pt_regs *regs,
>               arch_disarm_kprobe(p);
>               regs->ip = (unsigned long)p->addr;
>               reset_current_kprobe();
> -             return 1;
> +             preempt_enable_no_resched();
> +             break;
>  #endif
> +     case KPROBE_HIT_ACTIVE:
> +             recursive_singlestep(p, regs, kcb);
> +             break;
> +     case KPROBE_HIT_SS:
> +             if (*p->ainsn.insn == BREAKPOINT_INSTRUCTION) {
> +                     regs->flags &= ~TF_MASK;
> +                     regs->flags |= kcb->kprobe_saved_flags;
> +                     return 0;
> +             } else {
> +                     recursive_singlestep(p, regs, kcb);
> +             }
> +             break;
> +     default:
> +             /* impossible cases */
> +             WARN_ON(1);

WARN_ON() does not call panic(). Since the kernel doesn't stop,
we need to prepare singlestep after that.

How about this?
---
+       case KPROBE_HIT_ACTIVE:
+               break;
+       case KPROBE_HIT_SS:
+               if (*p->ainsn.insn == BREAKPOINT_INSTRUCTION) {
+                       regs->flags &= ~TF_MASK;
+                       regs->flags |= kcb->kprobe_saved_flags;
+                       return 0;
+               }
+               break;
+       default:
+               /* impossible cases */
+               WARN_ON(1);
        }
        save_previous_kprobe(kcb);
        set_current_kprobe(p, regs, kcb);
        kprobes_inc_nmissed_count(p);
        prepare_singlestep(p, regs);
        kcb->kprobe_status = KPROBE_REENTER;
        return 1;
 }
---


Thank you,

-- 
Masami Hiramatsu

Software Engineer
Hitachi Computer Products (America) Inc.
Software Solutions Division

e-mail: [EMAIL PROTECTED], [EMAIL PROTECTED]

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to