On Tue, Apr 05, 2022 at 12:38:54PM +0900, Jaewon Kim wrote: > The console_write and IRQ handler can run concurrently. > Problems may occurs console_write is continuously executed while > the IRQ handler is running. > > Signed-off-by: Jaewon Kim <jaewon02.kim@xxxxxxxxxxx> > --- > drivers/tty/serial/samsung_tty.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) What commit does this fix? > > diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c > index e1585fbae909..d362e8e114f1 100644 > --- a/drivers/tty/serial/samsung_tty.c > +++ b/drivers/tty/serial/samsung_tty.c > @@ -2480,12 +2480,26 @@ s3c24xx_serial_console_write(struct console *co, const char *s, > unsigned int count) > { > unsigned int ucon = rd_regl(cons_uart, S3C2410_UCON); > + unsigned long flags; > + int locked = 1; bool? > > /* not possible to xmit on unconfigured port */ > if (!s3c24xx_port_configured(ucon)) > return; > > + local_irq_save(flags); > + if (cons_uart->sysrq) > + locked = 0; > + else if (oops_in_progress) > + locked = spin_trylock(&cons_uart->lock); > + else > + spin_lock(&cons_uart->lock); > + > uart_console_write(cons_uart, s, count, s3c24xx_serial_console_putchar); > + > + if (locked) > + spin_unlock(&cons_uart->lock); > + local_irq_restore(flags); Why is irq_save required as well as a spinlock? thanks, greg k-h