This is a note to let you know that I've just added the patch titled
tty/serial: at91: reset rx_ring when port is shutdown
to the 3.12-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
tty-serial-at91-reset-rx_ring-when-port-is-shutdown.patch
and it can be found in the queue-3.12 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.
>From bb7e73c598fb226c75f7625088a8f6a45a0fc892 Mon Sep 17 00:00:00 2001
From: Mark Deneen <[email protected]>
Date: Tue, 7 Jan 2014 11:45:09 +0100
Subject: tty/serial: at91: reset rx_ring when port is shutdown
From: Mark Deneen <[email protected]>
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 <[email protected]>
Acked-by: Leilei Zhao <[email protected]>
[[email protected]: adapt to mainline kernel, handle !DMA case]
Signed-off-by: Nicolas Ferre <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
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);
Patches currently in stable-queue which might be from [email protected] are
queue-3.12/tty-serial-at91-reset-rx_ring-when-port-is-shutdown.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html