mirror of
https://github.com/torvalds/linux.git
synced 2026-06-06 05:27:07 +02:00
function_graph: Have profiler use curr_ret_stack and not depth
commitb1b35f2e21upstream. The profiler uses trace->depth to find its entry on the ret_stack, but the depth may not match the actual location of where its entry is (if an interrupt were to preempt the processing of the profiler for another function, the depth and the curr_ret_stack will be different). Have it use the curr_ret_stack as the index to find its ret_stack entry instead of using the depth variable, as that is no longer guaranteed to be the same. Cc: stable@kernel.org Fixes:03274a3ffb("tracing/fgraph: Adjust fgraph depth before calling trace return callback") Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
392374326d
commit
aec14c812b
|
|
@ -817,7 +817,7 @@ function_profile_call(unsigned long ip, unsigned long parent_ip,
|
|||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||
static int profile_graph_entry(struct ftrace_graph_ent *trace)
|
||||
{
|
||||
int index = trace->depth;
|
||||
int index = current->curr_ret_stack;
|
||||
|
||||
function_profile_call(trace->func, 0, NULL, NULL);
|
||||
|
||||
|
|
@ -852,7 +852,7 @@ static void profile_graph_return(struct ftrace_graph_ret *trace)
|
|||
if (!fgraph_graph_time) {
|
||||
int index;
|
||||
|
||||
index = trace->depth;
|
||||
index = current->curr_ret_stack;
|
||||
|
||||
/* Append this call time to the parent time to subtract */
|
||||
if (index)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user