Messages in this thread | | | From | Doug Anderson <> | Date | Wed, 16 Nov 2022 16:59:35 -0800 | Subject | Re: [PATCH printk v5 35/40] tty: serial: kgdboc: use srcu console list iterator |
| |
Hi,
On Wed, Nov 16, 2022 at 8:22 AM John Ogness <john.ogness@linutronix.de> wrote: > > Use srcu console list iteration for safe console list traversal. > Note that this is a preparatory change for when console_lock no > longer provides synchronization for the console list. > > Signed-off-by: John Ogness <john.ogness@linutronix.de> > Reviewed-by: Petr Mladek <pmladek@suse.com> > --- > drivers/tty/serial/kgdboc.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/tty/serial/kgdboc.c b/drivers/tty/serial/kgdboc.c > index 5be381003e58..c6df9ef34099 100644 > --- a/drivers/tty/serial/kgdboc.c > +++ b/drivers/tty/serial/kgdboc.c > @@ -451,6 +451,7 @@ static void kgdboc_earlycon_pre_exp_handler(void) > { > struct console *con; > static bool already_warned; > + int cookie; > > if (already_warned) > return; > @@ -463,9 +464,14 @@ static void kgdboc_earlycon_pre_exp_handler(void) > * serial drivers might be OK with this, print a warning once per > * boot if we detect this case. > */ > - for_each_console(con) > + cookie = console_srcu_read_lock(); > + for_each_console_srcu(con) { > if (con == kgdboc_earlycon_io_ops.cons) > - return; > + break; > + } > + console_srcu_read_unlock(cookie); > + if (con) > + return;
Is there truly any guarantee that "con" will be NULL if for_each_console_srcu() finishes naturally (AKA without a "break" being executed)?
It looks as if currently this will be true but nothing in the comments of for_each_console_srcu() nor hlist_for_each_entry_srcu() (which it calls) guarantees this, right? It would be nice if that was documented, but I guess it's not a huge deal.
Also: wasn't there just some big issue about people using loop iteration variables after the loop finished?
https://lwn.net/Articles/885941/
Ah, I guess that's a slightly different problem and probably not relevant here.
So it seems like this is fine.
Reviewed-by: Douglas Anderson <dianders@chromium.org>
| |