lkml.org 
[lkml]   [2014]   [Feb]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.12 057/133] tty/serial: at91: reset rx_ring when port is shutdown
    Date
    3.12-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Mark Deneen <mdeneen@gmail.com>

    commit bb7e73c598fb226c75f7625088a8f6a45a0fc892 upstream.

    When using RX DMA, the driver won't pass any data to the uart layer
    until the buffer is flipped. When the port is shutdown, the dma buffers
    are unmapped, but the head and tail of the ring buffer are not reseted.
    Since the serial console will keep the port open, this will only
    present itself when the uart is not shared.

    To reproduce the issue, with an unpatched driver, run a getty on /dev/ttyS0
    with no serial console and exit. Getty will exit, and when the new one returns
    you will be unable to log in. If you hold down a key long enough to fill the
    DMA buffer and flip it, you can then log in.

    Signed-off-by: Mark Deneen <mdeneen@gmail.com>
    Acked-by: Leilei Zhao <leilei.zhao@atmel.com>
    [nicolas.ferre@atmel.com: adapt to mainline kernel, handle !DMA case]
    Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/tty/serial/atmel_serial.c | 6 ++++++
    1 file changed, 6 insertions(+)

    --- a/drivers/tty/serial/atmel_serial.c
    +++ b/drivers/tty/serial/atmel_serial.c
    @@ -1660,6 +1660,12 @@ static void atmel_shutdown(struct uart_p
    atmel_port->release_tx(port);

    /*
    + * Reset ring buffer pointers
    + */
    + atmel_port->rx_ring.head = 0;
    + atmel_port->rx_ring.tail = 0;
    +
    + /*
    * Free the interrupt
    */
    free_irq(port->irq, port);



    \
     
     \ /
      Last update: 2014-02-05 04:41    [W:4.599 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site