diff options
Diffstat (limited to 'arch/sh/kernel/dwarf.c')
-rw-r--r-- | arch/sh/kernel/dwarf.c | 9 |
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 | ||