void die(const char *str, struct pt_regs *regs, int err)
{
int ret;
- unsigned long flags;
-
- raw_spin_lock_irqsave(&die_lock, flags);
oops_enter();
+ raw_spin_lock_irq(&die_lock);
console_verbose();
bust_spinlocks(1);
ret = __die(str, err, regs);
bust_spinlocks(0);
add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
+ raw_spin_unlock_irq(&die_lock);
oops_exit();
if (in_interrupt())
panic("Fatal exception in interrupt");
if (panic_on_oops)
panic("Fatal exception");
-
- raw_spin_unlock_irqrestore(&die_lock, flags);
-
if (ret != NOTIFY_STOP)
do_exit(SIGSEGV);
}