aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomoya MORINAGA <tomoya.rohm@gmail.com>2012-04-11 21:47:50 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-04-18 18:19:50 -0400
commitaf6d17cdc8c89aeb3101f0d27cd32fc0592b40b2 (patch)
tree588d1835847ccec5009c9ab744ca6a2de554bce7
parent7a6fbc9a887193a1e9f8658703881c528040afbc (diff)
pch_uart: Fix dma channel unallocated issue
This driver anticipates pch_uart_verify_port() is not called during installation. However, actually pch_uart_verify_port() is called during installation. As a result, memory access violation occurs like below. 0. initial value: use_dma=0 1. starup() - dma channel is not allocated because use_dma=0 2. pch_uart_verify_port() - Set use_dma=1 3. UART processing acts DMA mode because use_dma=1 - memory access violation occurs! This patch fixes the issue. Solution: Whenever pch_uart_verify_port() is called and then dma channel is not allocated, the channel should be allocated. Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/tty/serial/pch_uart.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c
index bbbec4a74cfb..c2816f494807 100644
--- a/drivers/tty/serial/pch_uart.c
+++ b/drivers/tty/serial/pch_uart.c
@@ -1447,9 +1447,11 @@ static int pch_uart_verify_port(struct uart_port *port,
1447 __func__); 1447 __func__);
1448 return -EOPNOTSUPP; 1448 return -EOPNOTSUPP;
1449#endif 1449#endif
1450 priv->use_dma = 1;
1451 priv->use_dma_flag = 1; 1450 priv->use_dma_flag = 1;
1452 dev_info(priv->port.dev, "PCH UART : Use DMA Mode\n"); 1451 dev_info(priv->port.dev, "PCH UART : Use DMA Mode\n");
1452 if (!priv->use_dma)
1453 pch_request_dma(port);
1454 priv->use_dma = 1;
1453 } 1455 }
1454 1456
1455 return 0; 1457 return 0;