diff options
-rw-r--r-- | kernel/trace/trace_functions_graph.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c index 7008d2e13cf2..39ada66389cc 100644 --- a/kernel/trace/trace_functions_graph.c +++ b/kernel/trace/trace_functions_graph.c | |||
@@ -191,10 +191,16 @@ unsigned long ftrace_return_to_handler(unsigned long frame_pointer) | |||
191 | 191 | ||
192 | ftrace_pop_return_trace(&trace, &ret, frame_pointer); | 192 | ftrace_pop_return_trace(&trace, &ret, frame_pointer); |
193 | trace.rettime = trace_clock_local(); | 193 | trace.rettime = trace_clock_local(); |
194 | ftrace_graph_return(&trace); | ||
195 | barrier(); | 194 | barrier(); |
196 | current->curr_ret_stack--; | 195 | current->curr_ret_stack--; |
197 | 196 | ||
197 | /* | ||
198 | * The trace should run after decrementing the ret counter | ||
199 | * in case an interrupt were to come in. We don't want to | ||
200 | * lose the interrupt if max_depth is set. | ||
201 | */ | ||
202 | ftrace_graph_return(&trace); | ||
203 | |||
198 | if (unlikely(!ret)) { | 204 | if (unlikely(!ret)) { |
199 | ftrace_graph_stop(); | 205 | ftrace_graph_stop(); |
200 | WARN_ON(1); | 206 | WARN_ON(1); |