diff options
-rw-r--r-- | arch/x86/include/asm/unwind.h | 14 | ||||
-rw-r--r-- | arch/x86/kernel/unwind_guess.c | 10 |
2 files changed, 12 insertions, 12 deletions
diff --git a/arch/x86/include/asm/unwind.h b/arch/x86/include/asm/unwind.h index c4b6d1cafa46..46de9ac4b990 100644 --- a/arch/x86/include/asm/unwind.h +++ b/arch/x86/include/asm/unwind.h | |||
@@ -23,6 +23,8 @@ void __unwind_start(struct unwind_state *state, struct task_struct *task, | |||
23 | 23 | ||
24 | bool unwind_next_frame(struct unwind_state *state); | 24 | bool unwind_next_frame(struct unwind_state *state); |
25 | 25 | ||
26 | unsigned long unwind_get_return_address(struct unwind_state *state); | ||
27 | |||
26 | static inline bool unwind_done(struct unwind_state *state) | 28 | static inline bool unwind_done(struct unwind_state *state) |
27 | { | 29 | { |
28 | return state->stack_info.type == STACK_TYPE_UNKNOWN; | 30 | return state->stack_info.type == STACK_TYPE_UNKNOWN; |
@@ -48,8 +50,6 @@ unsigned long *unwind_get_return_address_ptr(struct unwind_state *state) | |||
48 | return state->bp + 1; | 50 | return state->bp + 1; |
49 | } | 51 | } |
50 | 52 | ||
51 | unsigned long unwind_get_return_address(struct unwind_state *state); | ||
52 | |||
53 | #else /* !CONFIG_FRAME_POINTER */ | 53 | #else /* !CONFIG_FRAME_POINTER */ |
54 | 54 | ||
55 | static inline | 55 | static inline |
@@ -58,16 +58,6 @@ unsigned long *unwind_get_return_address_ptr(struct unwind_state *state) | |||
58 | return NULL; | 58 | return NULL; |
59 | } | 59 | } |
60 | 60 | ||
61 | static inline | ||
62 | unsigned long unwind_get_return_address(struct unwind_state *state) | ||
63 | { | ||
64 | if (unwind_done(state)) | ||
65 | return 0; | ||
66 | |||
67 | return ftrace_graph_ret_addr(state->task, &state->graph_idx, | ||
68 | *state->sp, state->sp); | ||
69 | } | ||
70 | |||
71 | #endif /* CONFIG_FRAME_POINTER */ | 61 | #endif /* CONFIG_FRAME_POINTER */ |
72 | 62 | ||
73 | #endif /* _ASM_X86_UNWIND_H */ | 63 | #endif /* _ASM_X86_UNWIND_H */ |
diff --git a/arch/x86/kernel/unwind_guess.c b/arch/x86/kernel/unwind_guess.c index b5a834c93065..9298993dc8b7 100644 --- a/arch/x86/kernel/unwind_guess.c +++ b/arch/x86/kernel/unwind_guess.c | |||
@@ -5,6 +5,16 @@ | |||
5 | #include <asm/stacktrace.h> | 5 | #include <asm/stacktrace.h> |
6 | #include <asm/unwind.h> | 6 | #include <asm/unwind.h> |
7 | 7 | ||
8 | unsigned long unwind_get_return_address(struct unwind_state *state) | ||
9 | { | ||
10 | if (unwind_done(state)) | ||
11 | return 0; | ||
12 | |||
13 | return ftrace_graph_ret_addr(state->task, &state->graph_idx, | ||
14 | *state->sp, state->sp); | ||
15 | } | ||
16 | EXPORT_SYMBOL_GPL(unwind_get_return_address); | ||
17 | |||
8 | bool unwind_next_frame(struct unwind_state *state) | 18 | bool unwind_next_frame(struct unwind_state *state) |
9 | { | 19 | { |
10 | struct stack_info *info = &state->stack_info; | 20 | struct stack_info *info = &state->stack_info; |