Thread (2 messages) 2 messages, 2 authors, 2008-05-01

Re: [PATCH] Fix a potential issue in mpc52xx uart driver

From: Grant Likely <hidden>
Date: 2008-05-01 18:07:07

On Tue, Apr 29, 2008 at 1:36 AM, Andrew Liu [off-list ref] 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 [off-list ref]
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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help