提交 721cc05b 编写于 作者: C Chen Zhou 提交者: Zheng Zengkai

printk/panic: prevent spin waiting in printk()

hulk inclusion
category: bugfix
bugzilla: 41832, https://gitee.com/openeuler/kernel/issues/I4JKT1
CVE: NA

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

When one cpu panic, the panic cpu send NMI to other cpus, if one of
the non-panic cpus is in printk() and get stopped before release
console_waiter, the panic cpu may spin waiting.

Here just release console_waiter directly after all non-panic cpus
get stopped.
Signed-off-by: NChen Zhou <chenzhou10@huawei.com>
Reviewed-by: NJian Cheng <cj.chengjian@huawei.com>
Reviewed-by: NXie XiuQi <xiexiuqi@huawei.com>
Signed-off-by: NChen Zhou <chenzhou10@huawei.com>
Signed-off-by: NCheng Jian <cj.chengjian@huawei.com>
Reviewed-by: NXie XiuQi <xiexiuqi@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 051d7aae
...@@ -1751,9 +1751,10 @@ void zap_locks(void) ...@@ -1751,9 +1751,10 @@ void zap_locks(void)
if (raw_spin_is_locked(&console_owner_lock)) { if (raw_spin_is_locked(&console_owner_lock)) {
raw_spin_lock_init(&console_owner_lock); raw_spin_lock_init(&console_owner_lock);
console_owner = NULL;
console_waiter = false;
} }
console_owner = NULL;
console_waiter = false;
} }
/** /**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册