Skip to contentSkip to conversation

serial: pl011: Avoid assumptions about buffer size when refilling TX DMA

PATCH New Andrew Jackson 1 participant 1 message Nov 7, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 2/5 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.

---
 drivers/tty/serial/amba-pl011.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)
drivers/tty/serial/amba-pl011.c +5 -1
index a285196..d8d067a 100644
@@ -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)
Signature · 1 line
1.7.1