Revert "arm64: traps: disable irq in die()"
authorHosung Kim <hosung0.kim@samsung.com>
Mon, 18 Jun 2018 11:11:44 +0000 (20:11 +0900)
committerYoungmin Nam <youngmin.nam@samsung.com>
Fri, 29 Jun 2018 09:16:59 +0000 (18:16 +0900)
This reverts commit 6f44a0bacb79a03972c83759711832b382b1b8ac.

This patch causes a hang situation when running hardlockup
detector or fiq debugger or multistage watchdog.

Change-Id: I4ae25ad7671381cc1333d5429790d30cf1a86789
Signed-off-by: Hosung Kim <hosung0.kim@samsung.com>
arch/arm64/kernel/traps.c

index 5109685df7ecae7f95ad5f57d824081f839ff567..e0e663d97514177f66b20ad48683ebd57da932ec 100644 (file)
@@ -254,12 +254,10 @@ static DEFINE_RAW_SPINLOCK(die_lock);
 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);
@@ -269,15 +267,13 @@ void die(const char *str, struct pt_regs *regs, int err)
 
        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);
 }