diff options
Diffstat (limited to 'kernel/exit.c')
| -rw-r--r-- | kernel/exit.c | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 15dc2ec80c46..bccfa4218356 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -807,6 +807,8 @@ void __noreturn do_exit(long code)  	struct task_struct *tsk = current;  	int group_dead; +	WARN_ON(irqs_disabled()); +  	synchronize_group_exit(tsk, code);  	WARN_ON(tsk->plug); @@ -938,6 +940,11 @@ void __noreturn make_task_dead(int signr)  	if (unlikely(!tsk->pid))  		panic("Attempted to kill the idle task!"); +	if (unlikely(irqs_disabled())) { +		pr_info("note: %s[%d] exited with irqs disabled\n", +			current->comm, task_pid_nr(current)); +		local_irq_enable(); +	}  	if (unlikely(in_atomic())) {  		pr_info("note: %s[%d] exited with preempt_count %d\n",  			current->comm, task_pid_nr(current),  |