On Tue, Apr 29, 2008 at 1:36 AM, Andrew Liu <[EMAIL PROTECTED]> wrote: > mpc52xx_uart_int and __uart_put_char both try to acquire the > port->lock. Therefore the function sequence of: > > mpc52xx_uart_int--> ...-->flush_to_ldisc-->...-->__uart_put_char > > can potentially trigger a deadlock. To avoid this deadlock a fix > similar to that found in the 8250.c serial driver is applied. The > deadlock is avoided by releasing the lock before pushing a buffer > and reacquiring it when completed. > > Signed-off-by: Andrew Liu <[EMAIL PROTECTED]>
Your patch is whitespace damaged and does not apply (tabs have been converted to spaces). It was trivial so I've applied it manually, but please be careful when posting future patches. Thanks, g. > > diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c > index d93b357..5f95e53 100644 > --- a/drivers/serial/mpc52xx_uart.c > +++ b/drivers/serial/mpc52xx_uart.c > @@ -783,7 +783,9 @@ mpc52xx_uart_int_rx_chars(struct uart_port *port) > } > } > > + spin_unlock(&port->lock); > tty_flip_buffer_push(tty); > + spin_lock(&port->lock); > > return psc_ops->raw_rx_rdy(port); > } > -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev