Commit f8234285 authored by Xiaomeng Zhang's avatar Xiaomeng Zhang
Browse files

x86: reboot: Initialize the printk locks to avoid deadlock

hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IB5G5N



--------------------------------

The reboot process needs to acquire the lock for log printing,
but the CPU holding the lock cannot release it while in NMI context,
preventing the system from completing the reboot process normally.

The primary function of nmi_shootdown_cpus() is to send NMI to all
other CPUs. By adding zap_locks(), it reinitializes logbuf_lock and
console_owner_lock, clears the owner and waiters of console_owner_lock,
and reinitializes console_sem. This ensures that even if logbuf_lock
is held, other CPUs calling printk in NMI context won't deadlock due
to inability to acquire the lock.

Fixes: c4ac4263 ("crashdump: x86: add NMI handler to capture other CPUs")
Signed-off-by: default avatarXiaomeng Zhang <zhangxiaomeng13@huawei.com>
parent e138c473
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -924,6 +924,7 @@ void nmi_shootdown_cpus(nmi_shootdown_cb callback)
		mdelay(1);
		msecs--;
	}
	zap_locks();

	/*
	 * Leave the nmi callback set, shootdown is a one-time thing.  Clearing