aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/kernel/dwarf.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/kernel/dwarf.c')
-rw-r--r--arch/sh/kernel/dwarf.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/sh/kernel/dwarf.c b/arch/sh/kernel/dwarf.c
index 9e1d26c8a0c4..c5b426506d16 100644
--- a/arch/sh/kernel/dwarf.c
+++ b/arch/sh/kernel/dwarf.c
@@ -605,17 +605,18 @@ struct dwarf_frame *dwarf_unwind_stack(unsigned long pc,
605 * expected to find the real return address. 605 * expected to find the real return address.
606 */ 606 */
607 if (pc == (unsigned long)&return_to_handler) { 607 if (pc == (unsigned long)&return_to_handler) {
608 int index = current->curr_ret_stack; 608 struct ftrace_ret_stack *ret_stack;
609 609
610 ret_stack = ftrace_graph_get_ret_stack(current, 0);
611 if (ret_stack)
612 pc = ret_stack->ret;
610 /* 613 /*
611 * We currently have no way of tracking how many 614 * We currently have no way of tracking how many
612 * return_to_handler()'s we've seen. If there is more 615 * return_to_handler()'s we've seen. If there is more
613 * than one patched return address on our stack, 616 * than one patched return address on our stack,
614 * complain loudly. 617 * complain loudly.
615 */ 618 */
616 WARN_ON(index > 0); 619 WARN_ON(ftrace_graph_get_ret_stack(current, 1);
617
618 pc = current->ret_stack[index].ret;
619 } 620 }
620#endif 621#endif
621 622