ftrace: Fix a slight race in modifying what function callback gets traced
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>
Sat, 31 Aug 2013 05:04:07 +0000 (01:04 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Tue, 3 Sep 2013 23:36:26 +0000 (19:36 -0400)
commit59338f754a55f07857342dbcd81652a4f091d72f
treed060266252fcf0dd8fbb399d6c3f26aab6be756e
parentccfe9e42e451232dd17a230d1b4e979c3d15311e
ftrace: Fix a slight race in modifying what function callback gets traced

There's a slight race when going from a list function to a non list
function. That is, when only one callback is registered to the function
tracer, it gets called directly by the mcount trampoline. But if this
function has filters, it may be called by the wrong functions.

As the list ops callback that handles multiple callbacks that are
registered to ftrace, it also handles what functions they call. While
the transaction is taking place, use the list function always, and
after all the updates are finished (only the functions that should be
traced are being traced), then we can update the trampoline to call
the function directly.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/ftrace.c