[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250513024212.74658-3-cuiyunhui@bytedance.com>
Date: Tue, 13 May 2025 10:42:11 +0800
From: Yunhui Cui <cuiyunhui@...edance.com>
To: arnd@...db.de,
andriy.shevchenko@...ux.intel.com,
benjamin.larsson@...exis.eu,
cuiyunhui@...edance.com,
gregkh@...uxfoundation.org,
heikki.krogerus@...ux.intel.com,
ilpo.jarvinen@...ux.intel.com,
jirislaby@...nel.org,
jkeeping@...usicbrands.com,
john.ogness@...utronix.de,
linux-kernel@...r.kernel.org,
linux-serial@...r.kernel.org,
markus.mayer@...aro.org,
matt.porter@...aro.org,
namcao@...utronix.de,
paulmck@...nel.org,
pmladek@...e.com,
schnelle@...ux.ibm.com,
sunilvl@...tanamicro.com,
tim.kryger@...aro.org
Subject: [PATCH v6 3/4] serial: 8250_dw: assert port->lock is held in dw8250_force_idle()
Reading UART_RX and checking whether UART_LSR_DR is set should be
atomic. Ensure the caller of dw8250_force_idle() holds port->lock.
Signed-off-by: Yunhui Cui <cuiyunhui@...edance.com>
---
drivers/tty/serial/8250/8250_dw.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c
index 1902f29444a1c..8b0018fadccea 100644
--- a/drivers/tty/serial/8250/8250_dw.c
+++ b/drivers/tty/serial/8250/8250_dw.c
@@ -13,6 +13,7 @@
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/io.h>
+#include <linux/lockdep.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/notifier.h>
@@ -117,6 +118,9 @@ static void dw8250_force_idle(struct uart_port *p)
struct uart_8250_port *up = up_to_u8250p(p);
unsigned int lsr;
+ /* Reading UART_LSR and UART_RX should be atomic. */
+ lockdep_assert_held_once(&p->lock);
+
/*
* The following call currently performs serial_out()
* against the FCR register. Because it differs to LCR
--
2.39.2
Powered by blists - more mailing lists