diff options
| author | Andrew Jackson <Andrew.Jackson@arm.com> | 2014-11-07 14:14:39 +0000 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-11-07 08:35:55 -0800 | 
| commit | e2a545a6aee935e44db08797f7155be38f3c18f9 (patch) | |
| tree | ac6c5ec14ec191afcd2bbb5fea391c8c4976aee3 | |
| parent | 4c0be45b18a3bd5c215589c4b320648e35024f6e (diff) | |
serial: pl011: Avoid assumptions about buffer size when refilling TX DMA
The existing code assumed that PL011_DMA_BUFFER_SIZE == UART_XMIT_SIZE,
which may not always be the case.  This allows for these two being
different sizes and not copying too much data.
Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | drivers/tty/serial/amba-pl011.c | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c index 8654049a70c0..6153a42d68db 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -501,7 +501,11 @@ static int pl011_dma_tx_refill(struct uart_amba_port *uap)  		memcpy(&dmatx->buf[0], &xmit->buf[xmit->tail], count);  	else {  		size_t first = UART_XMIT_SIZE - xmit->tail; -		size_t second = xmit->head; +		size_t second; + +		if (first > count) +			first = count; +		second = count - first;  		memcpy(&dmatx->buf[0], &xmit->buf[xmit->tail], first);  		if (second) | 
