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,  	for (unwind_start(&state, task, NULL, NULL); !unwind_done(&state);  	     unwind_next_frame(&state)) { -		regs = unwind_get_entry_regs(&state); +		regs = unwind_get_entry_regs(&state, NULL);  		if (regs) {  			/*  			 * Kernel mode registers on the stack indicate an @@ -164,8 +164,12 @@ int save_stack_trace_tsk_reliable(struct task_struct *tsk,  {  	int ret; +	/* +	 * If the task doesn't have a stack (e.g., a zombie), the stack is +	 * "reliably" empty. +	 */  	if (!try_get_task_stack(tsk)) -		return -EINVAL; +		return 0;  	ret = __save_stack_trace_reliable(trace, tsk); | 
