diff options
Diffstat (limited to 'arch/sparc/kernel/stacktrace.c')
-rw-r--r-- | arch/sparc/kernel/stacktrace.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/sparc/kernel/stacktrace.c b/arch/sparc/kernel/stacktrace.c index be4c14cccc05..dd654e651500 100644 --- a/arch/sparc/kernel/stacktrace.c +++ b/arch/sparc/kernel/stacktrace.c | |||
@@ -57,9 +57,11 @@ static void __save_stack_trace(struct thread_info *tp, | |||
57 | trace->entries[trace->nr_entries++] = pc; | 57 | trace->entries[trace->nr_entries++] = pc; |
58 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | 58 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER |
59 | if ((pc + 8UL) == (unsigned long) &return_to_handler) { | 59 | if ((pc + 8UL) == (unsigned long) &return_to_handler) { |
60 | int index = t->curr_ret_stack; | 60 | struct ftrace_ret_stack *ret_stack; |
61 | if (t->ret_stack && index >= graph) { | 61 | ret_stack = ftrace_graph_get_ret_stack(t, |
62 | pc = t->ret_stack[index - graph].ret; | 62 | graph); |
63 | if (ret_stack) { | ||
64 | pc = ret_stack->ret; | ||
63 | if (trace->nr_entries < | 65 | if (trace->nr_entries < |
64 | trace->max_entries) | 66 | trace->max_entries) |
65 | trace->entries[trace->nr_entries++] = pc; | 67 | trace->entries[trace->nr_entries++] = pc; |