• Steven Rostedt (VMware)'s avatar
    function_graph: Reverse the order of pushing the ret_stack and the callback · 7c6ea35e
    Steven Rostedt (VMware) authored
    The function graph profiler uses the ret_stack to store the "subtime" and
    reuse it by nested functions and also on the return. But the current logic
    has the profiler callback called before the ret_stack is updated, and it is
    just modifying the ret_stack that will later be allocated (it's just lucky
    that the "subtime" is not touched when it is allocated).
    
    This could also cause a crash if we are at the end of the ret_stack when
    this happens.
    
    By reversing the order of the allocating the ret_stack and then calling the
    callbacks attached to a function being traced, the ret_stack entry is no
    longer used before it is allocated.
    
    Cc: stable@kernel.org
    Fixes: 03274a3f ("tracing/fgraph: Adjust fgraph depth before calling trace return callback")
    Reviewed-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
    7c6ea35e
trace_functions_graph.c 39 KB