Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2a545a6 authored by Andrew Jackson's avatar Andrew Jackson Committed by Greg Kroah-Hartman
Browse files

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: default avatarAndrew Jackson <Andrew.Jackson@arm.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 4c0be45b
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -501,7 +501,11 @@ static int pl011_dma_tx_refill(struct uart_amba_port *uap)
		memcpy(&dmatx->buf[0], &xmit->buf[xmit->tail], count);
		memcpy(&dmatx->buf[0], &xmit->buf[xmit->tail], count);
	else {
	else {
		size_t first = UART_XMIT_SIZE - xmit->tail;
		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);
		memcpy(&dmatx->buf[0], &xmit->buf[xmit->tail], first);
		if (second)
		if (second)