diff options
Diffstat (limited to 'arch/x86/kernel/stacktrace.c')
-rw-r--r-- | arch/x86/kernel/stacktrace.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/x86/kernel/stacktrace.c b/arch/x86/kernel/stacktrace.c index 77835bc021c7..093f2ea5dd56 100644 --- a/arch/x86/kernel/stacktrace.c +++ b/arch/x86/kernel/stacktrace.c | |||
@@ -102,7 +102,7 @@ __save_stack_trace_reliable(struct stack_trace *trace, | |||
102 | for (unwind_start(&state, task, NULL, NULL); !unwind_done(&state); | 102 | for (unwind_start(&state, task, NULL, NULL); !unwind_done(&state); |
103 | unwind_next_frame(&state)) { | 103 | unwind_next_frame(&state)) { |
104 | 104 | ||
105 | regs = unwind_get_entry_regs(&state); | 105 | regs = unwind_get_entry_regs(&state, NULL); |
106 | if (regs) { | 106 | if (regs) { |
107 | /* | 107 | /* |
108 | * Kernel mode registers on the stack indicate an | 108 | * Kernel mode registers on the stack indicate an |
@@ -164,8 +164,12 @@ int save_stack_trace_tsk_reliable(struct task_struct *tsk, | |||
164 | { | 164 | { |
165 | int ret; | 165 | int ret; |
166 | 166 | ||
167 | /* | ||
168 | * If the task doesn't have a stack (e.g., a zombie), the stack is | ||
169 | * "reliably" empty. | ||
170 | */ | ||
167 | if (!try_get_task_stack(tsk)) | 171 | if (!try_get_task_stack(tsk)) |
168 | return -EINVAL; | 172 | return 0; |
169 | 173 | ||
170 | ret = __save_stack_trace_reliable(trace, tsk); | 174 | ret = __save_stack_trace_reliable(trace, tsk); |
171 | 175 | ||