Messages in this thread Patch in this message | | | Date | Tue, 18 Dec 2007 18:18:50 -0500 | From | Masami Hiramatsu <> | Subject | [PATCH 1/2] x86: fix kprobe_handler reenable preemption |
| |
Fix a preemption bug in kprobe_handler(). It has to call preempt_enable() before returning. I think this is critical on preemptive kernel.
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com> --- arch/x86/kernel/kprobes.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
Index: b/arch/x86/kernel/kprobes.c =================================================================== --- a/arch/x86/kernel/kprobes.c 2007-12-18 12:51:00.000000000 -0500 +++ b/arch/x86/kernel/kprobes.c 2007-12-18 12:53:38.000000000 -0500 @@ -467,7 +467,8 @@ arch_disarm_kprobe(p); regs->ip = (unsigned long)p->addr; reset_current_kprobe(); - return 1; + ret = 1; + goto no_kprobe; #endif } /* We have reentered the kprobe_handler(), since @@ -481,7 +482,7 @@ kprobes_inc_nmissed_count(p); prepare_singlestep(p, regs); kcb->kprobe_status = KPROBE_REENTER; - return 1; + ret = 1; } else { if (*addr != BREAKPOINT_INSTRUCTION) { /* The breakpoint instruction was removed by -- Masami Hiramatsu
Software Engineer Hitachi Computer Products (America) Inc. Software Solutions Division
e-mail: mhiramat@redhat.com, masami.hiramatsu.pt@hitachi.com
| |