Commit 0fad8bfe authored by Steven Rostedt (VMware)'s avatar Steven Rostedt (VMware)
Browse files

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: default avatarMichael Ellerman <mpe@ellerman.id.au>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent d2a68c4e
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -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) {
				ret_stack = ftrace_graph_get_ret_stack(current,
								  curr_frame++);
				if (ret_stack)
					pr_cont(" (%pS)",
				       (void *)current->ret_stack[curr_frame].ret);
				curr_frame--;
						(void *)ret_stack->ret);
				else
					curr_frame = -1;
			}
#endif
			if (firstframe)