• Steven Rostedt (Red Hat)'s avatar
    ftrace: Fix updating of filters for shared global_ops filters · 8f86f837
    Steven Rostedt (Red Hat) authored
    As the set_ftrace_filter affects both the function tracer as well as the
    function graph tracer, the ops that represent each have a shared
    ftrace_ops_hash structure. This allows both to be updated when the filter
    files are updated.
    
    But if function graph is enabled and the global_ops (function tracing) ops
    is not, then it is possible that the filter could be changed without the
    update happening for the function graph ops. This will cause the changes
    to not take place and may even cause a ftrace_bug to occur as it could mess
    with the trampoline accounting.
    
    The solution is to check if the ops uses the shared global_ops filter and
    if the ops itself is not enabled, to check if there's another ops that is
    enabled and also shares the global_ops filter. In that case, the
    modification still needs to be executed.
    
    Link: http://lkml.kernel.org/r/20150114154329.055980438@goodmis.org
    
    Cc: stable@vger.kernel.org # 3.17+
    Reviewed-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    8f86f837
ftrace.c 136 KB