@@ -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
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@bytedance.com> --- drivers/tty/serial/8250/8250_dw.c | 4 ++++ 1 file changed, 4 insertions(+)