Re: [PATCH v3 1/1] tty: serial: samsung: add spin_lock for interrupt and console_write

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07. 04. 22, 9:16, 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.

From the patch POV:

Reviewed-by: Jiri Slaby <jirislaby@xxxxxxxxxx>

But given this is a v3 with no version changelog below "---", you've just kicked the Greg's bot to wake up :P.

Signed-off-by: Jaewon Kim <jaewon02.kim@xxxxxxxxxxx>
---
  drivers/tty/serial/samsung_tty.c | 12 ++++++++++++
  1 file changed, 12 insertions(+)

diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c
index e1585fbae909..8af5aceb9f4e 100644
--- a/drivers/tty/serial/samsung_tty.c
+++ b/drivers/tty/serial/samsung_tty.c
@@ -2480,12 +2480,24 @@ 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;
+	bool locked = true;
/* not possible to xmit on unconfigured port */
  	if (!s3c24xx_port_configured(ucon))
  		return;
+ if (cons_uart->sysrq)
+		locked = false;
+	else if (oops_in_progress)
+		locked = spin_trylock_irqsave(&cons_uart->lock, flags);
+	else
+		spin_lock_irqsave(&cons_uart->lock, flags);
+
  	uart_console_write(cons_uart, s, count, s3c24xx_serial_console_putchar);
+
+	if (locked)
+		spin_unlock_irqrestore(&cons_uart->lock, flags);
  }
/* Shouldn't be __init, as it can be instantiated from other module */


--
js
suse labs



[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux for Synopsys ARC Processors]    
  • [Linux on Unisoc (RDA Micro) SoCs]     [Linux Actions SoC]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  •   Powered by Linux