diff options
author | Suresh Mangipudi <smangipudi@nvidia.com> | 2010-06-22 15:45:32 +0530 |
---|---|---|
committer | Gary King <gking@nvidia.com> | 2010-06-22 22:47:23 -0700 |
commit | a2f6d4d0337a6c67335404c4140bab95a53d8336 (patch) | |
tree | 7c71c2b790003aac6abc5e3cf3a28c6aaa0049d3 | |
parent | 67ff721112df58bedcd8afdaf8fe5292d2313d61 (diff) |
[ARM/tegra]Serial:Check xmit buffer before updating xmit fifo
Checking explicitly number of available bytes in transmit buffer
before writing into the transmit buffer. Removing additional checks.
Bug 700035
Change-Id: Ica2a6649e9acb2e059ebf6bb08dc5eaecdad8ed7
Reviewed-on: http://git-master/r/2990
Tested-by: Suresh Mangipudi <smangipudi@nvidia.com>
Reviewed-by: Gary King <gking@nvidia.com>
-rwxr-xr-x[-rw-r--r--] | drivers/serial/tegra_hsuart.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/serial/tegra_hsuart.c b/drivers/serial/tegra_hsuart.c index 39a6035e9955..0f6102f7bfb0 100644..100755 --- a/drivers/serial/tegra_hsuart.c +++ b/drivers/serial/tegra_hsuart.c @@ -154,8 +154,12 @@ static void fill_tx_fifo(struct tegra_uart_port *t, int max_bytes) { int i; struct circ_buf *xmit = &t->uport.state->xmit; + int count; + int xmit_nr; + count = CIRC_CNT_TO_END(xmit->head, xmit->tail, UART_XMIT_SIZE); + xmit_nr = min_t(int, count, max_bytes); - for (i = 0; i < max_bytes; i++) { + for (i = 0; i < xmit_nr; i++) { BUG_ON(uart_circ_empty(xmit)); uart_writeb(t, xmit->buf[xmit->tail], UART_TX); xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1); |