diff options
Diffstat (limited to 'arch/x86/kernel/ftrace.c')
| -rw-r--r-- | arch/x86/kernel/ftrace.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/arch/x86/kernel/ftrace.c b/arch/x86/kernel/ftrace.c index 382eb2936d4..a93742a5746 100644 --- a/arch/x86/kernel/ftrace.c +++ b/arch/x86/kernel/ftrace.c | |||
| @@ -437,18 +437,19 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr, | |||
| 437 | return; | 437 | return; |
| 438 | } | 438 | } |
| 439 | 439 | ||
| 440 | if (ftrace_push_return_trace(old, self_addr, &trace.depth, | ||
| 441 | frame_pointer) == -EBUSY) { | ||
| 442 | *parent = old; | ||
| 443 | return; | ||
| 444 | } | ||
| 445 | |||
| 446 | trace.func = self_addr; | 440 | trace.func = self_addr; |
| 441 | trace.depth = current->curr_ret_stack + 1; | ||
| 447 | 442 | ||
| 448 | /* Only trace if the calling function expects to */ | 443 | /* Only trace if the calling function expects to */ |
| 449 | if (!ftrace_graph_entry(&trace)) { | 444 | if (!ftrace_graph_entry(&trace)) { |
| 450 | current->curr_ret_stack--; | ||
| 451 | *parent = old; | 445 | *parent = old; |
| 446 | return; | ||
| 447 | } | ||
| 448 | |||
| 449 | if (ftrace_push_return_trace(old, self_addr, &trace.depth, | ||
| 450 | frame_pointer) == -EBUSY) { | ||
| 451 | *parent = old; | ||
| 452 | return; | ||
| 452 | } | 453 | } |
| 453 | } | 454 | } |
| 454 | #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ | 455 | #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ |
