Re: [RFC][PATCH] tracing: Have stack tracer force RCU to be watching

From: Steven Rostedt
Date: Tue Oct 20 2015 - 17:32:37 EST


On Tue, 20 Oct 2015 13:25:28 -0700
"Paul E. McKenney" <paulmck@xxxxxxxxxxxxxxxxxx> wrote:

> On Tue, Oct 20, 2015 at 12:10:31PM -0400, Steven Rostedt wrote:
> >
> > Paul,
> >
> > I've spent a couple of days debugging this, and finally found that my
> > stack tracer was calling the stack trace code, which calls
> > __module_address() which asserts the below.
> >
> > Is just calling rcu_irq_enter() and rcu_irq_exit() safe to do
> > everywhere (with interrupts always disabled)? This patch appears to fix
> > the bug.
>
> Yep! Just don't call it from an NMI handler. And don't call it with
> interrupts enabled. The patch looks to have interrupts always disabled,
> and the surrounding code doesn't look like NMI-safe code anyway, so
> should be OK.
>
> Thanx, Paul
>

Hmm, good point about NMI handler. Right now I think the only thing
protecting this from getting in the critical section while in NMI is
the check that we are using the task struct stack. But that may not be
enough in 32 bit.

I should probably add a "if (in_nmi()) return" somewhere.

-- Steve
--
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/