Commit 3c0fcb52 authored by Takatoshi Akiyama's avatar Takatoshi Akiyama Committed by Greg Kroah-Hartman

serial: sh-sci: Fix panic when serial console and DMA are enabled

commit 3c910176 upstream.

This patch fixes an issue that kernel panic happens when DMA is enabled
and we press enter key while the kernel booting on the serial console.

* An interrupt may occur after sci_request_irq().
* DMA transfer area is initialized by setup_timer() in sci_request_dma()
  and used in interrupt.

If an interrupt occurred between sci_request_irq() and setup_timer() in
sci_request_dma(), DMA transfer area has not been initialized yet.
So, this patch changes the order of sci_request_irq() and
sci_request_dma().

Fixes: 73a19e4c ("serial: sh-sci: Add DMA support.")
Signed-off-by: default avatarTakatoshi Akiyama <takatoshi.akiyama.kj@ps.hitachi-solutions.com>
[Shimoda changes the commit log]
Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Cc: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent cc04a143
...@@ -1800,11 +1800,13 @@ static int sci_startup(struct uart_port *port) ...@@ -1800,11 +1800,13 @@ static int sci_startup(struct uart_port *port)
dev_dbg(port->dev, "%s(%d)\n", __func__, port->line); dev_dbg(port->dev, "%s(%d)\n", __func__, port->line);
sci_request_dma(port);
ret = sci_request_irq(s); ret = sci_request_irq(s);
if (unlikely(ret < 0)) if (unlikely(ret < 0)) {
sci_free_dma(port);
return ret; return ret;
}
sci_request_dma(port);
spin_lock_irqsave(&port->lock, flags); spin_lock_irqsave(&port->lock, flags);
sci_start_tx(port); sci_start_tx(port);
...@@ -1834,8 +1836,8 @@ static void sci_shutdown(struct uart_port *port) ...@@ -1834,8 +1836,8 @@ static void sci_shutdown(struct uart_port *port)
} }
#endif #endif
sci_free_dma(port);
sci_free_irq(s); sci_free_irq(s);
sci_free_dma(port);
} }
static unsigned int sci_scbrr_calc(struct sci_port *s, unsigned int bps, static unsigned int sci_scbrr_calc(struct sci_port *s, unsigned int bps,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment