[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ZkdfUYuM7KYEz_7K@pathway.suse.cz>
Date: Fri, 17 May 2024 15:44:49 +0200
From: Petr Mladek <pmladek@...e.com>
To: John Ogness <john.ogness@...utronix.de>
Cc: Sergey Senozhatsky <senozhatsky@...omium.org>,
Steven Rostedt <rostedt@...dmis.org>,
Thomas Gleixner <tglx@...utronix.de>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH printk v5 07/30] printk: nbcon: Use driver
synchronization while (un)registering
On Mon 2024-05-06 12:33:28, John Ogness wrote:
> On 2024-05-02, John Ogness <john.ogness@...utronix.de> wrote:
> > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
> > index e6b91401895f..15d19d8461ed 100644
> > --- a/kernel/printk/printk.c
> > +++ b/kernel/printk/printk.c
> > @@ -3537,6 +3538,19 @@ void register_console(struct console *newcon)
> > newcon->seq = init_seq;
> > }
> >
> > + /*
> > + * If another context is actively using the hardware of this new
> > + * console, it will not be aware of the nbcon synchronization. This
> > + * is a risk that two contexts could access the hardware
> > + * simultaneously if this new console is used for atomic printing
> > + * and the other context is still using the hardware.
> > + *
> > + * Use the driver synchronization to ensure that the hardware is not
> > + * in use while this new console transitions to being registered.
> > + */
> > + if ((newcon->flags & CON_NBCON) && newcon->write_atomic)
> > + newcon->device_lock(newcon, &flags);
> > +
> > /*
> > * Put this console in the list - keep the
> > * preferred driver at the head of the list.
> > @@ -3561,6 +3575,10 @@ void register_console(struct console *newcon)
> > * register_console() completes.
> > */
> >
> > + /* This new console is now registered. */
> > + if ((newcon->flags & CON_NBCON) && newcon->write_atomic)
> > + newcon->device_unlock(newcon, flags);
> > +
>
> Rather than writing the conditions twice, I will add a local variable
> and check that instead.
>
> bool use_device_lock = (newcon->flags & CON_NBCON) && newcon->write_atomic;
>
> ...
>
> if (use_device_lock)
> newcon->device_lock(newcon, &flags);
>
> ...
>
> if (use_device_lock)
> newcon->device_unlock(newcon, flags);
>
Makes sense. With this change:
Reviewed-by: Petr Mladek <pmladek@...e.com>
Best Regards,
Petr
Powered by blists - more mailing lists