From: Stas Sergeev <stsp@aknet.ru>

This driver also needs to drop the lock when calling back into the tty layer.

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 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)
_