* Re: [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks [not found] <Z-iSb0ryR-tiUCj0@42be267012b8> @ 2025-03-30 1:16 ` Ryo Takakura 2025-03-30 7:30 ` Greg KH 0 siblings, 1 reply; 4+ messages in thread From: Ryo Takakura @ 2025-03-30 1:16 UTC (permalink / raw) To: alex, aou, gregkh, jirislaby, john.ogness, palmer, paul.walmsley, pmladek, samuel.holland, bigeasy, conor.dooley, u.kleine-koenig, lkp Cc: linux-kernel, linux-riscv, linux-serial, stable, oe-kbuild-all, Ryo Takakura startup()/shutdown() callbacks access SIFIVE_SERIAL_IE_OFFS. The register is also accessed from write() callback. If console were printing and startup()/shutdown() callback gets called, its access to the register could be overwritten. Add port->lock to startup()/shutdown() callbacks to make sure their access to SIFIVE_SERIAL_IE_OFFS is synchronized against write() callback. Signed-off-by: Ryo Takakura <ryotkkr98@gmail.com> Cc: stable@vger.kernel.org --- Hi, I'm sorry that I wasn't aware of how Cc stable should be done. I added Cc for stable but please tell me if this patch should be resent or if there is any that is missing. Sincerely, Ryo Takakura --- drivers/tty/serial/sifive.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/tty/serial/sifive.c b/drivers/tty/serial/sifive.c index 5904a2d4c..054a8e630 100644 --- a/drivers/tty/serial/sifive.c +++ b/drivers/tty/serial/sifive.c @@ -563,8 +563,11 @@ static void sifive_serial_break_ctl(struct uart_port *port, int break_state) static int sifive_serial_startup(struct uart_port *port) { struct sifive_serial_port *ssp = port_to_sifive_serial_port(port); + unsigned long flags; + uart_port_lock_irqsave(&ssp->port, &flags); __ssp_enable_rxwm(ssp); + uart_port_unlock_irqrestore(&ssp->port, flags); return 0; } @@ -572,9 +575,12 @@ static int sifive_serial_startup(struct uart_port *port) static void sifive_serial_shutdown(struct uart_port *port) { struct sifive_serial_port *ssp = port_to_sifive_serial_port(port); + unsigned long flags; + uart_port_lock_irqsave(&ssp->port, &flags); __ssp_disable_rxwm(ssp); __ssp_disable_txwm(ssp); + uart_port_unlock_irqrestore(&ssp->port, flags); } /** -- 2.34.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks 2025-03-30 1:16 ` [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks Ryo Takakura @ 2025-03-30 7:30 ` Greg KH 2025-03-30 10:51 ` Ryo Takakura 0 siblings, 1 reply; 4+ messages in thread From: Greg KH @ 2025-03-30 7:30 UTC (permalink / raw) To: Ryo Takakura Cc: alex, aou, jirislaby, john.ogness, palmer, paul.walmsley, pmladek, samuel.holland, bigeasy, conor.dooley, u.kleine-koenig, lkp, linux-kernel, linux-riscv, linux-serial, stable, oe-kbuild-all On Sun, Mar 30, 2025 at 10:16:10AM +0900, Ryo Takakura wrote: > startup()/shutdown() callbacks access SIFIVE_SERIAL_IE_OFFS. > The register is also accessed from write() callback. > > If console were printing and startup()/shutdown() callback > gets called, its access to the register could be overwritten. > > Add port->lock to startup()/shutdown() callbacks to make sure > their access to SIFIVE_SERIAL_IE_OFFS is synchronized against > write() callback. > > Signed-off-by: Ryo Takakura <ryotkkr98@gmail.com> > Cc: stable@vger.kernel.org > --- > > Hi, > > I'm sorry that I wasn't aware of how Cc stable should be done. > > I added Cc for stable but please tell me if this patch should be > resent or if there is any that is missing. Please resend a v3. thanks, greg k-h _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks 2025-03-30 7:30 ` Greg KH @ 2025-03-30 10:51 ` Ryo Takakura 0 siblings, 0 replies; 4+ messages in thread From: Ryo Takakura @ 2025-03-30 10:51 UTC (permalink / raw) To: gregkh Cc: alex, aou, bigeasy, conor.dooley, jirislaby, john.ogness, linux-kernel, linux-riscv, linux-serial, lkp, oe-kbuild-all, palmer, paul.walmsley, pmladek, ryotkkr98, samuel.holland, stable, u.kleine-koenig Hi Greg, On Sun, 30 Mar 2025 09:30:27 +0200, Greg KH wrote: >On Sun, Mar 30, 2025 at 10:16:10AM +0900, Ryo Takakura wrote: >> startup()/shutdown() callbacks access SIFIVE_SERIAL_IE_OFFS. >> The register is also accessed from write() callback. >> >> If console were printing and startup()/shutdown() callback >> gets called, its access to the register could be overwritten. >> >> Add port->lock to startup()/shutdown() callbacks to make sure >> their access to SIFIVE_SERIAL_IE_OFFS is synchronized against >> write() callback. >> >> Signed-off-by: Ryo Takakura <ryotkkr98@gmail.com> >> Cc: stable@vger.kernel.org >> --- >> >> Hi, >> >> I'm sorry that I wasn't aware of how Cc stable should be done. >> >> I added Cc for stable but please tell me if this patch should be >> resent or if there is any that is missing. > >Please resend a v3. Ok. I'll send v3 shortly ;) Sincerely, Ryo Takakura >thanks, > >greg k-h _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 0/2] serial: sifive: Convert sifive console to nbcon @ 2025-03-30 0:30 Ryo Takakura 2025-03-30 0:35 ` [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks Ryo Takakura 0 siblings, 1 reply; 4+ messages in thread From: Ryo Takakura @ 2025-03-30 0:30 UTC (permalink / raw) To: alex, aou, gregkh, jirislaby, john.ogness, palmer, paul.walmsley, pmladek, samuel.holland, bigeasy, conor.dooley, u.kleine-koenig Cc: linux-kernel, linux-riscv, linux-serial, Ryo Takakura Hi! This series convert sifive console to nbcon. The first patch fixes the issue which was pointed out by John [0] that the driver has been accessing SIFIVE_SERIAL_IE_OFFS register on its ->startup() and ->shutdown() without port lock synchronization against ->write(). The fix on the first patch still applies to the second patch which converts the console to nbcon as ->write_thread() holds port lock and ->write_atomic() checks for the console ownership. Sincerely, Ryo Takakura [0] https://lore.kernel.org/lkml/84sen2fo4b.fsf@jogness.linutronix.de/ --- Changes since v1: [1] https://lore.kernel.org/lkml/20250323060603.388621-1-ryotkkr98@gmail.com/ - Thank you John for the feedback! - Add a patch for synchronizing startup()/shutdown() vs write(). - Add <Reviewed-by> by John. --- Ryo Takakura (2): serial: sifive: lock port in startup()/shutdown() callbacks serial: sifive: Switch to nbcon console drivers/tty/serial/sifive.c | 93 +++++++++++++++++++++++++++++++------ 1 file changed, 80 insertions(+), 13 deletions(-) -- 2.34.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks 2025-03-30 0:30 [PATCH v2 0/2] serial: sifive: Convert sifive console to nbcon Ryo Takakura @ 2025-03-30 0:35 ` Ryo Takakura 0 siblings, 0 replies; 4+ messages in thread From: Ryo Takakura @ 2025-03-30 0:35 UTC (permalink / raw) To: alex, aou, gregkh, jirislaby, john.ogness, palmer, paul.walmsley, pmladek, samuel.holland, bigeasy, conor.dooley, u.kleine-koenig Cc: linux-kernel, linux-riscv, linux-serial, stable, Ryo Takakura startup()/shutdown() callbacks access SIFIVE_SERIAL_IE_OFFS. The register is also accessed from write() callback. If console were printing and startup()/shutdown() callback gets called, its access to the register could be overwritten. Add port->lock to startup()/shutdown() callbacks to make sure their access to SIFIVE_SERIAL_IE_OFFS is synchronized against write() callback. Signed-off-by: Ryo Takakura <ryotkkr98@gmail.com> --- drivers/tty/serial/sifive.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/tty/serial/sifive.c b/drivers/tty/serial/sifive.c index 5904a2d4c..054a8e630 100644 --- a/drivers/tty/serial/sifive.c +++ b/drivers/tty/serial/sifive.c @@ -563,8 +563,11 @@ static void sifive_serial_break_ctl(struct uart_port *port, int break_state) static int sifive_serial_startup(struct uart_port *port) { struct sifive_serial_port *ssp = port_to_sifive_serial_port(port); + unsigned long flags; + uart_port_lock_irqsave(&ssp->port, &flags); __ssp_enable_rxwm(ssp); + uart_port_unlock_irqrestore(&ssp->port, flags); return 0; } @@ -572,9 +575,12 @@ static int sifive_serial_startup(struct uart_port *port) static void sifive_serial_shutdown(struct uart_port *port) { struct sifive_serial_port *ssp = port_to_sifive_serial_port(port); + unsigned long flags; + uart_port_lock_irqsave(&ssp->port, &flags); __ssp_disable_rxwm(ssp); __ssp_disable_txwm(ssp); + uart_port_unlock_irqrestore(&ssp->port, flags); } /** -- 2.34.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-03-30 10:51 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <Z-iSb0ryR-tiUCj0@42be267012b8>
2025-03-30 1:16 ` [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks Ryo Takakura
2025-03-30 7:30 ` Greg KH
2025-03-30 10:51 ` Ryo Takakura
2025-03-30 0:30 [PATCH v2 0/2] serial: sifive: Convert sifive console to nbcon Ryo Takakura
2025-03-30 0:35 ` [PATCH v2 1/2] serial: sifive: lock port in startup()/shutdown() callbacks Ryo Takakura
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox