Re: [add to stable] ftrace: Do not function trace inlined functions

From: Steven Rostedt
Date: Tue Jan 08 2013 - 17:25:04 EST


On Tue, 2013-01-08 at 14:10 -0800, Greg Kroah-Hartman wrote:
> On Tue, Jan 08, 2013 at 04:38:41PM -0500, Steven Rostedt wrote:
> > Hi Greg and Ben,
> >
> > Can you add commit 45959ee7aa645815a5ce303a0ea1e48a21e67c6a to the
> > stable trees.
>
> That showed up in 3.3-rc1, so I don't think it's needed in 3.2-stable.

Well, it should have been marked for stable, which means it missed 3.2.

>
> But why add it now? What does it "fix" for 3.4 and 3.7?
>

When gcc doesn't inline a function marked inline (with different
compilers, it does different things), a function that shouldn't be
traced gets traced by the function tracer. The result is a kernel crash,
which usually ends up being a triple fault (automatic reboot, hard to
debug).

That's because some low level function like local_irqs_disable() gets
traced, which is used in the function tracer recursion protection. Which
means, that it's outside the recursion protection and when you enable
function tracing, it causes the system to reboot.

Thomas just hit this on 3.2-rt, and was asking me why it wasn't marked
for stable. I just didn't think of it at the time.

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