• Steven Rostedt's avatar
    ftrace: use module notifier for function tracer · 93eb677d
    Steven Rostedt authored
    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: default avatarSteven Rostedt <rostedt@goodmis.org>
    93eb677d
module.c 74.4 KB