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>
This commit is contained in:
Родитель
7a6fbc9a88
Коммит
af6d17cdc8
|
@ -1447,9 +1447,11 @@ static int pch_uart_verify_port(struct uart_port *port,
|
|||
__func__);
|
||||
return -EOPNOTSUPP;
|
||||
#endif
|
||||
priv->use_dma = 1;
|
||||
priv->use_dma_flag = 1;
|
||||
dev_info(priv->port.dev, "PCH UART : Use DMA Mode\n");
|
||||
if (!priv->use_dma)
|
||||
pch_request_dma(port);
|
||||
priv->use_dma = 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче