{
        struct uart_8250_port   *p = param;
        struct uart_8250_dma    *dma = p->dma;
-       struct tty_struct       *tty = p->port.state->port.tty;
+       struct tty_port         *tty_port = &p->port.state->port;
        struct dma_tx_state     state;
+       int                     count;
 
        dma_sync_single_for_cpu(dma->rxchan->device->dev, dma->rx_addr,
                                dma->rx_size, DMA_FROM_DEVICE);
        dmaengine_tx_status(dma->rxchan, dma->rx_cookie, &state);
        dmaengine_terminate_all(dma->rxchan);
 
-       tty_insert_flip_string(tty, dma->rx_buf, dma->rx_size - state.residue);
-       p->port.icount.rx += dma->rx_size - state.residue;
+       count = dma->rx_size - state.residue;
 
-       tty_flip_buffer_push(tty);
+       tty_insert_flip_string(tty_port, dma->rx_buf, count);
+       p->port.icount.rx += count;
+
+       tty_flip_buffer_push(tty_port);
 }
 
 int serial8250_tx_dma(struct uart_8250_port *p)