From: John Ogness <john.ogness@linutronix.de> To: Petr Mladek <pmladek@suse.com> Cc: Sergey Senozhatsky <senozhatsky@chromium.org>, Steven Rostedt <rostedt@goodmis.org>, Thomas Gleixner <tglx@linutronix.de>, linux-kernel@vger.kernel.org, Richard Weinberger <richard@nod.at>, Anton Ivanov <anton.ivanov@cambridgegreys.com>, Johannes Berg <johannes@sipsolutions.net>, linux-um@lists.infradead.org Subject: [PATCH printk v4 06/39] um: kmsg_dump: only dump when no output console available Date: Mon, 14 Nov 2022 17:34:59 +0106 [thread overview] Message-ID: <20221114162932.141883-7-john.ogness@linutronix.de> (raw) In-Reply-To: <20221114162932.141883-1-john.ogness@linutronix.de> The initial intention of the UML kmsg_dumper is to dump the kernel buffers to stdout if there is no console available to perform the regular crash output. However, if ttynull was registered as a console, no crash output was seen. Commit e23fe90dec28 ("um: kmsg_dumper: always dump when not tty console") tried to fix this by performing the kmsg_dump unless the stdio console was behind /dev/console or enabled. But this allowed kmsg dumping to occur even if other non-stdio consoles will output the crash output. Also, a console being the driver behind /dev/console has nothing to do with a crash scenario. Restore the initial intention by dumping the kernel buffers to stdout only if a non-ttynull console is registered and enabled. Also add detailed comments so that it is clear why these rules are applied. Signed-off-by: John Ogness <john.ogness@linutronix.de> Reviewed-by: Petr Mladek <pmladek@suse.com> --- arch/um/kernel/kmsg_dump.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/arch/um/kernel/kmsg_dump.c b/arch/um/kernel/kmsg_dump.c index 0224fcb36e22..40abf1e9ccb1 100644 --- a/arch/um/kernel/kmsg_dump.c +++ b/arch/um/kernel/kmsg_dump.c @@ -17,13 +17,22 @@ static void kmsg_dumper_stdout(struct kmsg_dumper *dumper, unsigned long flags; size_t len = 0; - /* only dump kmsg when no console is available */ + /* + * If no consoles are available to output crash information, dump + * the kmsg buffer to stdout. + */ + if (!console_trylock()) return; for_each_console(con) { - if(strcmp(con->name, "tty") == 0 && - (con->flags & (CON_ENABLED | CON_CONSDEV)) != 0) { + /* + * The ttynull console and disabled consoles are ignored + * since they cannot output. All other consoles are + * expected to output the crash information. + */ + if (strcmp(con->name, "ttynull") != 0 && + (con->flags & CON_ENABLED)) { break; } } -- 2.30.2
WARNING: multiple messages have this Message-ID (diff)
From: John Ogness <john.ogness@linutronix.de> To: Petr Mladek <pmladek@suse.com> Cc: Sergey Senozhatsky <senozhatsky@chromium.org>, Steven Rostedt <rostedt@goodmis.org>, Thomas Gleixner <tglx@linutronix.de>, linux-kernel@vger.kernel.org, Richard Weinberger <richard@nod.at>, Anton Ivanov <anton.ivanov@cambridgegreys.com>, Johannes Berg <johannes@sipsolutions.net>, linux-um@lists.infradead.org Subject: [PATCH printk v4 06/39] um: kmsg_dump: only dump when no output console available Date: Mon, 14 Nov 2022 17:34:59 +0106 [thread overview] Message-ID: <20221114162932.141883-7-john.ogness@linutronix.de> (raw) In-Reply-To: <20221114162932.141883-1-john.ogness@linutronix.de> The initial intention of the UML kmsg_dumper is to dump the kernel buffers to stdout if there is no console available to perform the regular crash output. However, if ttynull was registered as a console, no crash output was seen. Commit e23fe90dec28 ("um: kmsg_dumper: always dump when not tty console") tried to fix this by performing the kmsg_dump unless the stdio console was behind /dev/console or enabled. But this allowed kmsg dumping to occur even if other non-stdio consoles will output the crash output. Also, a console being the driver behind /dev/console has nothing to do with a crash scenario. Restore the initial intention by dumping the kernel buffers to stdout only if a non-ttynull console is registered and enabled. Also add detailed comments so that it is clear why these rules are applied. Signed-off-by: John Ogness <john.ogness@linutronix.de> Reviewed-by: Petr Mladek <pmladek@suse.com> --- arch/um/kernel/kmsg_dump.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/arch/um/kernel/kmsg_dump.c b/arch/um/kernel/kmsg_dump.c index 0224fcb36e22..40abf1e9ccb1 100644 --- a/arch/um/kernel/kmsg_dump.c +++ b/arch/um/kernel/kmsg_dump.c @@ -17,13 +17,22 @@ static void kmsg_dumper_stdout(struct kmsg_dumper *dumper, unsigned long flags; size_t len = 0; - /* only dump kmsg when no console is available */ + /* + * If no consoles are available to output crash information, dump + * the kmsg buffer to stdout. + */ + if (!console_trylock()) return; for_each_console(con) { - if(strcmp(con->name, "tty") == 0 && - (con->flags & (CON_ENABLED | CON_CONSDEV)) != 0) { + /* + * The ttynull console and disabled consoles are ignored + * since they cannot output. All other consoles are + * expected to output the crash information. + */ + if (strcmp(con->name, "ttynull") != 0 && + (con->flags & CON_ENABLED)) { break; } } -- 2.30.2 _______________________________________________ linux-um mailing list linux-um@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-um
next prev parent reply other threads:[~2022-11-14 16:30 UTC|newest] Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-11-14 16:28 [PATCH printk v4 00/39] reduce console_lock scope John Ogness 2022-11-14 16:28 ` John Ogness 2022-11-14 16:28 ` John Ogness 2022-11-14 16:28 ` John Ogness 2022-11-14 16:28 ` [PATCH printk v4 01/39] serial: kgdboc: Lock console list in probe function John Ogness 2022-11-14 16:28 ` [PATCH printk v4 02/39] printk: Convert console_drivers list to hlist John Ogness 2022-11-14 16:28 ` [PATCH printk v4 03/39] printk: Prepare for SRCU console list protection John Ogness 2022-11-15 10:50 ` Petr Mladek 2022-11-15 11:33 ` John Ogness 2022-11-15 12:03 ` Petr Mladek 2022-11-14 16:28 ` [PATCH printk v4 04/39] printk: register_console: use "registered" for variable names John Ogness 2022-11-15 11:01 ` Petr Mladek 2022-11-14 16:28 ` [PATCH printk v4 05/39] printk: fix setting first seq for consoles John Ogness 2022-11-15 12:04 ` Petr Mladek 2022-11-14 16:28 ` John Ogness [this message] 2022-11-14 16:28 ` [PATCH printk v4 06/39] um: kmsg_dump: only dump when no output console available John Ogness 2022-11-14 16:29 ` [PATCH printk v4 07/39] tty: serial: kgdboc: document console_lock usage John Ogness 2022-11-14 16:29 ` [PATCH printk v4 08/39] tty: tty_io: " John Ogness 2022-11-14 16:29 ` [PATCH printk v4 09/39] proc: consoles: " John Ogness 2022-11-14 16:29 ` [PATCH printk v4 10/39] printk: introduce console_list_lock John Ogness 2022-11-14 16:29 ` [PATCH printk v4 11/39] console: introduce wrappers to read/write console flags John Ogness 2022-11-15 12:26 ` Petr Mladek 2022-11-14 16:29 ` [PATCH printk v4 12/39] um: kmsg_dumper: use srcu console list iterator John Ogness 2022-11-14 16:29 ` John Ogness 2022-11-14 16:29 ` [PATCH printk v4 13/39] kdb: " John Ogness 2022-11-14 21:16 ` Aaron Tomlin 2022-11-14 16:29 ` [PATCH printk v4 14/39] printk: console_flush_all: " John Ogness 2022-11-14 16:29 ` [PATCH printk v4 15/39] printk: __pr_flush: " John Ogness 2022-11-14 16:29 ` [PATCH printk v4 16/39] printk: console_is_usable: use console_srcu_read_flags John Ogness 2022-11-15 12:47 ` Petr Mladek 2022-11-14 16:29 ` [PATCH printk v4 17/39] printk: console_unblank: use srcu console list iterator John Ogness 2022-11-14 16:29 ` [PATCH printk v4 18/39] printk: console_flush_on_panic: " John Ogness 2022-11-14 16:29 ` [PATCH printk v4 19/39] printk: console_device: " John Ogness 2022-11-14 16:29 ` [PATCH printk v4 20/39] console: introduce console_is_registered() John Ogness 2022-11-14 16:29 ` [PATCH printk v4 21/39] serial_core: replace uart_console_enabled() with uart_console_registered() John Ogness 2022-11-14 16:29 ` [PATCH printk v4 22/39] tty: nfcon: use console_is_registered() John Ogness 2022-11-15 13:08 ` Petr Mladek 2022-11-14 16:29 ` [PATCH printk v4 23/39] efi: earlycon: " John Ogness 2022-11-14 16:29 ` [PATCH printk v4 24/39] tty: hvc: " John Ogness 2022-11-14 16:29 ` John Ogness 2022-11-14 16:29 ` [PATCH printk v4 25/39] tty: serial: earlycon: " John Ogness 2022-11-14 16:29 ` [PATCH printk v4 26/39] tty: serial: pic32_uart: " John Ogness 2022-11-14 16:29 ` [PATCH printk v4 27/39] tty: serial: samsung_tty: " John Ogness 2022-11-14 16:29 ` John Ogness 2022-11-14 16:29 ` [PATCH printk v4 28/39] tty: serial: xilinx_uartps: " John Ogness 2022-11-14 16:29 ` John Ogness 2022-11-14 16:29 ` [PATCH printk v4 29/39] usb: early: xhci-dbc: " John Ogness 2022-11-14 16:29 ` [PATCH printk v4 30/39] netconsole: avoid CON_ENABLED misuse to track registration John Ogness 2022-11-14 16:29 ` [PATCH printk v4 31/39] printk, xen: fbfront: create/use safe function for forcing preferred John Ogness 2022-11-14 16:29 ` John Ogness 2022-11-14 19:51 ` John Ogness 2022-11-14 19:51 ` John Ogness 2022-11-15 13:22 ` Petr Mladek 2022-11-15 13:22 ` Petr Mladek 2022-11-14 16:29 ` [PATCH printk v4 32/39] tty: tty_io: use console_list_lock for list synchronization John Ogness 2022-11-14 16:29 ` [PATCH printk v4 33/39] proc: consoles: use console_list_lock for list iteration John Ogness 2022-11-14 16:29 ` [PATCH printk v4 34/39] tty: serial: kgdboc: use srcu console list iterator John Ogness 2022-11-15 15:17 ` Petr Mladek 2022-11-14 16:29 ` [PATCH printk v4 35/39] tty: serial: kgdboc: use console_list_lock for list traversal John Ogness 2022-11-15 15:18 ` Petr Mladek 2022-11-14 16:29 ` [PATCH printk v4 36/39] tty: serial: kgdboc: synchronize tty_find_polling_driver() and register_console() John Ogness 2022-11-14 16:29 ` [PATCH printk v4 37/39] tty: serial: kgdboc: use console_list_lock to trap exit John Ogness 2022-11-14 16:29 ` [PATCH printk v4 38/39] printk: relieve console_lock of list synchronization duties John Ogness 2022-11-15 15:34 ` replay log: " Petr Mladek 2022-11-15 16:41 ` John Ogness 2022-11-15 18:23 ` Petr Mladek 2022-11-16 8:52 ` John Ogness 2022-11-16 8:56 ` John Ogness 2022-11-16 9:08 ` John Ogness 2022-11-16 9:48 ` Petr Mladek 2022-11-15 16:41 ` Petr Mladek 2022-11-15 17:15 ` John Ogness 2022-11-15 18:36 ` Petr Mladek 2022-11-14 16:29 ` [PATCH printk v4 39/39] tty: serial: sh-sci: use setup() callback for early console John Ogness 2022-11-15 16:43 ` Petr Mladek
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20221114162932.141883-7-john.ogness@linutronix.de \ --to=john.ogness@linutronix.de \ --cc=anton.ivanov@cambridgegreys.com \ --cc=johannes@sipsolutions.net \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-um@lists.infradead.org \ --cc=pmladek@suse.com \ --cc=richard@nod.at \ --cc=rostedt@goodmis.org \ --cc=senozhatsky@chromium.org \ --cc=tglx@linutronix.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.