• Steven Rostedt (Red Hat)'s avatar
    ftrace: Fix ftrace enable ordering of sysctl ftrace_enabled · 24cc23d3
    Steven Rostedt (Red Hat) authored
    [ Upstream commit 524a3868 ]
    
    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>
    Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
    24cc23d3
ftrace.c 130 KB