Skip to content

Commit e1ca3ff

Browse files
Ryo Takakuragregkh
authored andcommitted
serial: sifive: lock port in startup()/shutdown() callbacks
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. Fixes: 45c054d ("tty: serial: add driver for the SiFive UART") Signed-off-by: Ryo Takakura <ryotkkr98@gmail.com> Reviewed-by: Petr Mladek <pmladek@suse.com> Cc: stable@vger.kernel.org Reviewed-by: John Ogness <john.ogness@linutronix.de> Rule: add Link: https://lore.kernel.org/stable/20250330003522.386632-1-ryotkkr98%40gmail.com Link: https://lore.kernel.org/r/20250412001847.183221-1-ryotkkr98@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent ee6a44d commit e1ca3ff

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

drivers/tty/serial/sifive.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,18 +563,24 @@ static void sifive_serial_break_ctl(struct uart_port *port, int break_state)
563563
static int sifive_serial_startup(struct uart_port *port)
564564
{
565565
struct sifive_serial_port *ssp = port_to_sifive_serial_port(port);
566+
unsigned long flags;
566567

568+
uart_port_lock_irqsave(&ssp->port, &flags);
567569
__ssp_enable_rxwm(ssp);
570+
uart_port_unlock_irqrestore(&ssp->port, flags);
568571

569572
return 0;
570573
}
571574

572575
static void sifive_serial_shutdown(struct uart_port *port)
573576
{
574577
struct sifive_serial_port *ssp = port_to_sifive_serial_port(port);
578+
unsigned long flags;
575579

580+
uart_port_lock_irqsave(&ssp->port, &flags);
576581
__ssp_disable_rxwm(ssp);
577582
__ssp_disable_txwm(ssp);
583+
uart_port_unlock_irqrestore(&ssp->port, flags);
578584
}
579585

580586
/**

0 commit comments

Comments
 (0)