Re: [PATCH] PPC64 Fix kprobes calling smp_processor_id when preemptible
From: Ananth N Mavinakayanahalli
Date: Thu Mar 17 2005 - 12:46:52 EST
On Mon, Mar 14, 2005 at 03:53:21PM +1100, Paul Mackerras wrote:
Hi Paul,
> When booting with kprobes and preemption both enabled and
> CONFIG_DEBUG_PREEMPT=y, I get lots of warnings about smp_processor_id
> being called in preemptible code, from kprobe_exceptions_notify. On
> ppc64, interrupts and preemption are not disabled in the handlers for
> most synchronous exceptions such as breakpoints and page faults
> (interrupts are disabled in the very early exception entry code but
> are reenabled before calling the C handler).
>
> This patch adds a preempt_disable/enable pair to
> kprobe_exceptions_notify, and moves the preempt_disable() in
> kprobe_handler() to be done only in the case where we are about to
> single-step an instruction. This eliminates the bug warnings.
The patch is fine, but it seems to break jprobes - we have an unbalanced
preempt_enable/disable path while handling jprobes. Patch below is
against 2.6.11-mm4 and fixes the issue.
Thanks,
Ananth
Signed-off-by: Ananth N Mavinakayanahalli <ananth@xxxxxxxxxx>
diff -Naurp temp/linux-2.6.11/arch/ppc64/kernel/kprobes.c kprobes/linux-2.6.11/arch/ppc64/kernel/kprobes.c
--- temp/linux-2.6.11/arch/ppc64/kernel/kprobes.c 2005-03-17 05:15:53.000000000 +0530
+++ kprobes/linux-2.6.11/arch/ppc64/kernel/kprobes.c 2005-03-17 19:46:21.000000000 +0530
@@ -262,7 +262,6 @@ int setjmp_pre_handler(struct kprobe *p,
void jprobe_return(void)
{
- preempt_enable_no_resched();
asm volatile("trap" ::: "memory");
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/