summaryrefslogtreecommitdiff
path: root/kernel/printk
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2021-11-07 07:51:16 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-11-25 11:48:45 +0300
commitc3b0ab956d90969bb3c07101375853bd93c9793a (patch)
tree20f9717704b80ed00b50cb45383234322e6a43fb /kernel/printk
parent76b46fa3f8d95c51b808e2227a5e0fc5f8005842 (diff)
downloadlinux-c3b0ab956d90969bb3c07101375853bd93c9793a.tar.xz
printk: restore flushing of NMI buffers on remote CPUs after NMI backtraces
commit 5d5e4522a7f404d1a96fd6c703989d32a9c9568d upstream. printk from NMI context relies on irq work being raised on the local CPU to print to console. This can be a problem if the NMI was raised by a lockup detector to print lockup stack and regs, because the CPU may not enable irqs (because it is locked up). Introduce printk_trigger_flush() that can be called another CPU to try to get those messages to the console, call that where printk_safe_flush was previously called. Fixes: 93d102f094be ("printk: remove safe buffers") Cc: stable@vger.kernel.org # 5.15 Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Reviewed-by: Petr Mladek <pmladek@suse.com> Reviewed-by: John Ogness <john.ogness@linutronix.de> Signed-off-by: Petr Mladek <pmladek@suse.com> Link: https://lore.kernel.org/r/20211107045116.1754411-1-npiggin@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel/printk')
-rw-r--r--kernel/printk/printk.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index a8d0a58deebc..99221b016c68 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -3252,6 +3252,11 @@ void defer_console_output(void)
preempt_enable();
}
+void printk_trigger_flush(void)
+{
+ defer_console_output();
+}
+
int vprintk_deferred(const char *fmt, va_list args)
{
int r;