From: Aaron Tomlin <atomlin@redhat.com>
To: John Ogness <john.ogness@linutronix.de>
Cc: Petr Mladek <pmladek@suse.com>,
Sergey Senozhatsky <senozhatsky@chromium.org>,
Steven Rostedt <rostedt@goodmis.org>,
Thomas Gleixner <tglx@linutronix.de>,
linux-kernel@vger.kernel.org,
Jason Wessel <jason.wessel@windriver.com>,
Daniel Thompson <daniel.thompson@linaro.org>,
Douglas Anderson <dianders@chromium.org>,
Luis Chamberlain <mcgrof@kernel.org>,
kgdb-bugreport@lists.sourceforge.net
Subject: Re: [PATCH printk v4 13/39] kdb: use srcu console list iterator
Date: Mon, 14 Nov 2022 21:16:47 +0000 [thread overview]
Message-ID: <20221114211647.bml74abrsatcnmda@ava.usersys.com> (raw)
In-Reply-To: <20221114162932.141883-14-john.ogness@linutronix.de>
On Mon 2022-11-14 17:35 +0106, John Ogness wrote:
> Guarantee safe iteration of the console list by using SRCU.
>
> Signed-off-by: John Ogness <john.ogness@linutronix.de>
> Reviewed-by: Petr Mladek <pmladek@suse.com>
> ---
> kernel/debug/kdb/kdb_io.c | 18 ++++++++++++++++--
> 1 file changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/debug/kdb/kdb_io.c b/kernel/debug/kdb/kdb_io.c
> index 67d3c48a1522..5c7e9ba7cd6b 100644
> --- a/kernel/debug/kdb/kdb_io.c
> +++ b/kernel/debug/kdb/kdb_io.c
> @@ -545,6 +545,7 @@ static void kdb_msg_write(const char *msg, int msg_len)
> {
> struct console *c;
> const char *cp;
> + int cookie;
> int len;
>
> if (msg_len == 0)
> @@ -558,8 +559,20 @@ static void kdb_msg_write(const char *msg, int msg_len)
> cp++;
> }
>
> - for_each_console(c) {
> - if (!(c->flags & CON_ENABLED))
> + /*
> + * The console_srcu_read_lock() only provides safe console list
> + * traversal. The use of the ->write() callback relies on all other
> + * CPUs being stopped at the moment and console drivers being able to
> + * handle reentrance when @oops_in_progress is set.
> + *
> + * There is no guarantee that every console driver can handle
> + * reentrance in this way; the developer deploying the debugger
> + * is responsible for ensuring that the console drivers they
> + * have selected handle reentrance appropriately.
> + */
> + cookie = console_srcu_read_lock();
> + for_each_console_srcu(c) {
> + if (!(console_srcu_read_flags(c) & CON_ENABLED))
> continue;
> if (c == dbg_io_ops->cons)
> continue;
> @@ -577,6 +590,7 @@ static void kdb_msg_write(const char *msg, int msg_len)
> --oops_in_progress;
> touch_nmi_watchdog();
> }
> + console_srcu_read_unlock(cookie);
> }
>
> int vkdb_printf(enum kdb_msgsrc src, const char *fmt, va_list ap)
> --
> 2.30.2
>
Reviewed-by: Aaron Tomlin <atomlin@atomlin.com>
--
Aaron Tomlin
next prev parent reply other threads:[~2022-11-14 21:18 UTC|newest]
Thread overview: 64+ 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 ` [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 ` [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 ` [PATCH printk v4 13/39] kdb: " John Ogness
2022-11-14 21:16 ` Aaron Tomlin [this message]
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 ` [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 ` [PATCH printk v4 28/39] tty: serial: xilinx_uartps: " 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 19:51 ` John Ogness
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=20221114211647.bml74abrsatcnmda@ava.usersys.com \
--to=atomlin@redhat.com \
--cc=daniel.thompson@linaro.org \
--cc=dianders@chromium.org \
--cc=jason.wessel@windriver.com \
--cc=john.ogness@linutronix.de \
--cc=kgdb-bugreport@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=pmladek@suse.com \
--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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox