diff --git a/[refs] b/[refs] index 99ab0d3b7085..c1daaa5c28b8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1c95ba1e1de7edffc0c4e275e147f1a9eb1f81ae +refs/heads/master: 47d3904fe40d62deee8cd46e79ca784e7a548acd diff --git a/trunk/drivers/serial/8250.c b/trunk/drivers/serial/8250.c index 4d8e14b7aa93..dd5e1ac22251 100644 --- a/trunk/drivers/serial/8250.c +++ b/trunk/drivers/serial/8250.c @@ -2343,8 +2343,11 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, /* * CTS flow control flag and modem status interrupts + * Only disable MSI if no threads are waiting in + * serial_core::uart_wait_modem_status */ - up->ier &= ~UART_IER_MSI; + if (!waitqueue_active(&up->port.state->port.delta_msr_wait)) + up->ier &= ~UART_IER_MSI; if (!(up->bugs & UART_BUG_NOMSR) && UART_ENABLE_MS(&up->port, termios->c_cflag)) up->ier |= UART_IER_MSI;