From: Stas Sergeev This driver also needs to drop the lock when calling back into the tty layer. Signed-off-by: Andrew Morton --- 25-akpm/drivers/serial/au1x00_uart.c | 2 ++ 1 files changed, 2 insertions(+) diff -puN drivers/serial/au1x00_uart.c~au1x00_uart-deadlock-fix drivers/serial/au1x00_uart.c --- 25/drivers/serial/au1x00_uart.c~au1x00_uart-deadlock-fix 2005-02-21 17:11:25.000000000 -0800 +++ 25-akpm/drivers/serial/au1x00_uart.c 2005-02-21 17:11:25.000000000 -0800 @@ -320,7 +320,9 @@ receive_chars(struct uart_8250_port *up, ignore_char: *status = serial_inp(up, UART_LSR); } while ((*status & UART_LSR_DR) && (max_count-- > 0)); + spin_unlock(&up->port.lock); tty_flip_buffer_push(tty); + spin_lock(&up->port.lock); } static _INLINE_ void transmit_chars(struct uart_8250_port *up) _