serial: bfin-uart: Don't access tty circular buffer in TX DMA interrupt after it...
[pandora-kernel.git] / drivers / tty / serial / bfin_uart.c
index 26953bf..5832fde 100644 (file)
@@ -535,11 +535,13 @@ static irqreturn_t bfin_serial_dma_tx_int(int irq, void *dev_id)
                 *              when start a new tx.
                 */
                UART_CLEAR_IER(uart, ETBEI);
-               xmit->tail = (xmit->tail + uart->tx_count) & (UART_XMIT_SIZE - 1);
                uart->port.icount.tx += uart->tx_count;
+               if (!uart_circ_empty(xmit)) {
+                       xmit->tail = (xmit->tail + uart->tx_count) & (UART_XMIT_SIZE - 1);
 
-               if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
-                       uart_write_wakeup(&uart->port);
+                       if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
+                               uart_write_wakeup(&uart->port);
+               }
 
                bfin_serial_dma_tx_chars(uart);
        }