Patch "serial: mvebu-uart: free the IRQ in ->shutdown()" has been added to the 4.7-stable tree
This is a note to let you know that I've just added the patch titled
serial: mvebu-uart: free the IRQ in ->shutdown()
to the 4.7-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:
serial-mvebu-uart-free-the-irq-in-shutdown.patch
and it can be found in the queue-4.7 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
c2c1659b4f8f9e19fe82a4fd06cca4b3d59090ceMon Sep 17 00:00:00 2001
From: Thomas Petazzoni <[email protected]>
Date: Thu, 16 Jun 2016 16:48:52 +0200
Subject: serial: mvebu-uart: free the IRQ in ->shutdown()
From: Thomas Petazzoni <[email protected]>
commit c2c1659b4f8f9e19fe82a4fd06cca4b3d59090ce upstream.
As suggested by the serial port infrastructure documentation, the IRQ is requested in ->startup(). However, it is never freed in the ->shutdown() hook.
With simple systems that open the serial port once for all and always have at least one process that keep the serial port opened, there was no problem. But with a more complicated system (*cough* systemd *cough*), the serial port is opened/closed many times, which at some point no processes having the serial port open at all. Due to this ->startup() gets called again, tries to request_irq() again, which fails.
--- drivers/tty/serial/mvebu-uart.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/tty/serial/mvebu-uart.c +2 -0
@@ -300,6 +300,8 @@ static int mvebu_uart_startup(struct uarstatic void mvebu_uart_shutdown (struct uart_port *port) {writel (0 , port->membase +UART_CTRL ); + +free_irq (port->irq, port); } static void mvebu_uart_set_termios(struct uart_port *port,
Patches currently in stable-queue which might be from [email protected] are
queue-4.7/serial-mvebu-uart-free-the-irq-in-shutdown.patch