From: John Ogness Date: Wed, 4 Sep 2024 12:05:22 +0000 (+0206) Subject: printk: Flush console on unregister_console() X-Git-Tag: v6.12-rc1~192^2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0e53e2d9f72080b7ea1a4003558041fee78cdef9;p=thirdparty%2Fkernel%2Flinux.git printk: Flush console on unregister_console() Ensure consoles have flushed pending records before unregistering. The console should print up to at least its related "console disabled" record. Signed-off-by: John Ogness Reviewed-by: Petr Mladek Link: https://lore.kernel.org/r/20240904120536.115780-4-john.ogness@linutronix.de Signed-off-by: Petr Mladek --- diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index acf668001096a..c79e962b822ad 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -3771,11 +3771,16 @@ static int unregister_console_locked(struct console *console) if (res > 0) return 0; + if (!console_is_registered_locked(console)) + res = -ENODEV; + else if (console_is_usable(console, console->flags)) + __pr_flush(console, 1000, true); + /* Disable it unconditionally */ console_srcu_write_flags(console, console->flags & ~CON_ENABLED); - if (!console_is_registered_locked(console)) - return -ENODEV; + if (res < 0) + return res; /* * Use the driver synchronization to ensure that the hardware is not