diff options
Diffstat (limited to 'arch/sh/kernel/dumpstack.c')
-rw-r--r-- | arch/sh/kernel/dumpstack.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/sh/kernel/dumpstack.c b/arch/sh/kernel/dumpstack.c index 93c6c0e691ee..9f1c9c11d62d 100644 --- a/arch/sh/kernel/dumpstack.c +++ b/arch/sh/kernel/dumpstack.c | |||
@@ -56,17 +56,20 @@ print_ftrace_graph_addr(unsigned long addr, void *data, | |||
56 | struct thread_info *tinfo, int *graph) | 56 | struct thread_info *tinfo, int *graph) |
57 | { | 57 | { |
58 | struct task_struct *task = tinfo->task; | 58 | struct task_struct *task = tinfo->task; |
59 | struct ftrace_ret_stack *ret_stack; | ||
59 | unsigned long ret_addr; | 60 | unsigned long ret_addr; |
60 | int index = task->curr_ret_stack; | ||
61 | 61 | ||
62 | if (addr != (unsigned long)return_to_handler) | 62 | if (addr != (unsigned long)return_to_handler) |
63 | return; | 63 | return; |
64 | 64 | ||
65 | if (!task->ret_stack || index < *graph) | 65 | if (!task->ret_stack) |
66 | return; | 66 | return; |
67 | 67 | ||
68 | index -= *graph; | 68 | ret_stack = ftrace_graph_get_ret_stack(task, *graph); |
69 | ret_addr = task->ret_stack[index].ret; | 69 | if (!ret_stack) |
70 | return; | ||
71 | |||
72 | ret_addr = ret_stack->ret; | ||
70 | 73 | ||
71 | ops->address(data, ret_addr, 1); | 74 | ops->address(data, ret_addr, 1); |
72 | 75 | ||