mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 08:44:21 +08:00
powerpc/frace: Use ftrace_graph_get_ret_stack() instead of curr_ret_stack
The structure of the ret_stack array on the task struct is going to change, and accessing it directly via the curr_ret_stack index will no longer give the ret_stack entry that holds the return address. To access that, architectures must now use ftrace_graph_get_ret_stack() to get the associated ret_stack that matches the saved return address. Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: linuxppc-dev@lists.ozlabs.org Acked-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
parent
d2a68c4eff
commit
0fad8bfef7
@ -2061,9 +2061,10 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
|
||||
int count = 0;
|
||||
int firstframe = 1;
|
||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||
int curr_frame = current->curr_ret_stack;
|
||||
struct ftrace_ret_stack *ret_stack;
|
||||
extern void return_to_handler(void);
|
||||
unsigned long rth = (unsigned long)return_to_handler;
|
||||
int curr_frame = 0;
|
||||
#endif
|
||||
|
||||
sp = (unsigned long) stack;
|
||||
@ -2089,9 +2090,13 @@ void show_stack(struct task_struct *tsk, unsigned long *stack)
|
||||
printk("["REG"] ["REG"] %pS", sp, ip, (void *)ip);
|
||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||
if ((ip == rth) && curr_frame >= 0) {
|
||||
pr_cont(" (%pS)",
|
||||
(void *)current->ret_stack[curr_frame].ret);
|
||||
curr_frame--;
|
||||
ret_stack = ftrace_graph_get_ret_stack(current,
|
||||
curr_frame++);
|
||||
if (ret_stack)
|
||||
pr_cont(" (%pS)",
|
||||
(void *)ret_stack->ret);
|
||||
else
|
||||
curr_frame = -1;
|
||||
}
|
||||
#endif
|
||||
if (firstframe)
|
||||
|
Loading…
Reference in New Issue
Block a user