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 b564b1eae4ae..2c2e151bf39e 100644 --- a/arch/sh/kernel/dumpstack.c +++ b/arch/sh/kernel/dumpstack.c | |||
@@ -59,17 +59,20 @@ print_ftrace_graph_addr(unsigned long addr, void *data, | |||
59 | struct thread_info *tinfo, int *graph) | 59 | struct thread_info *tinfo, int *graph) |
60 | { | 60 | { |
61 | struct task_struct *task = tinfo->task; | 61 | struct task_struct *task = tinfo->task; |
62 | struct ftrace_ret_stack *ret_stack; | ||
62 | unsigned long ret_addr; | 63 | unsigned long ret_addr; |
63 | int index = task->curr_ret_stack; | ||
64 | 64 | ||
65 | if (addr != (unsigned long)return_to_handler) | 65 | if (addr != (unsigned long)return_to_handler) |
66 | return; | 66 | return; |
67 | 67 | ||
68 | if (!task->ret_stack || index < *graph) | 68 | if (!task->ret_stack) |
69 | return; | 69 | return; |
70 | 70 | ||
71 | index -= *graph; | 71 | ret_stack = ftrace_graph_get_ret_stack(task, *graph); |
72 | ret_addr = task->ret_stack[index].ret; | 72 | if (!ret_stack) |
73 | return; | ||
74 | |||
75 | ret_addr = ret_stack->ret; | ||
73 | 76 | ||
74 | ops->address(data, ret_addr, 1); | 77 | ops->address(data, ret_addr, 1); |
75 | 78 | ||