ftrace: use module notifier for function tracer
authorSteven Rostedt <srostedt@redhat.com>
Wed, 15 Apr 2009 17:24:06 +0000 (13:24 -0400)
committerIngo Molnar <mingo@elte.hu>
Fri, 17 Apr 2009 14:59:15 +0000 (16:59 +0200)
commit93eb677d74a4f7d3edfb678c94f6c0544d9fbad2
tree8bbc46895be623a78316230362e94969dbb02135
parentf3948f8857ef5de239f28a61dddb1554a0ae4c2c
ftrace: use module notifier for function tracer

The hooks in the module code for the function tracer must be called
before any of that module code runs. The function tracer hooks
modify the module (replacing calls to mcount to nops). If the code
is executed while the change occurs, then the CPU can take a GPF.

To handle the above with a bit of paranoia, I originally implemented
the hooks as calls directly from the module code.

After examining the notifier calls, it looks as though the start up
notify is called before any of the module's code is executed. This makes
the use of the notify safe with ftrace.

Only the startup notify is required to be "safe". The shutdown simply
removes the entries from the ftrace function list, and does not modify
any code.

This change has another benefit. It removes a issue with a reverse dependency
in the mutexes of ftrace_lock and module_mutex.

[ Impact: fix lock dependency bug, cleanup ]

Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
include/linux/ftrace.h
include/linux/module.h
kernel/module.c
kernel/trace/ftrace.c