• Steven Rostedt (Red Hat)'s avatar
    ftrace: Fix ftrace enable ordering of sysctl ftrace_enabled · 524a3868
    Steven Rostedt (Red Hat) authored
    Some archs (specifically PowerPC), are sensitive with the ordering of
    the enabling of the calls to function tracing and setting of the
    function to use to be traced.
    
    That is, update_ftrace_function() sets what function the ftrace_caller
    trampoline should call. Some archs require this to be set before
    calling ftrace_run_update_code().
    
    Another bug was discovered, that ftrace_startup_sysctl() called
    ftrace_run_update_code() directly. If the function the ftrace_caller
    trampoline changes, then it will not be updated. Instead a call
    to ftrace_startup_enable() should be called because it tests to see
    if the callback changed since the code was disabled, and will
    tell the arch to update appropriately. Most archs do not need this
    notification, but PowerPC does.
    
    The problem could be seen by the following commands:
    
     # echo 0 > /proc/sys/kernel/ftrace_enabled
     # echo function > /sys/kernel/debug/tracing/current_tracer
     # echo 1 > /proc/sys/kernel/ftrace_enabled
     # cat /sys/kernel/debug/tracing/trace
    
    The trace will show that function tracing was not active.
    
    Cc: stable@vger.kernel.org # 2.6.27+
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    524a3868
ftrace.c 137 KB