diff options
| -rw-r--r-- | drivers/tty/serial/pch_uart.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c index 2c5a3e4a17db..44077c0b7670 100644 --- a/drivers/tty/serial/pch_uart.c +++ b/drivers/tty/serial/pch_uart.c | |||
| @@ -667,31 +667,21 @@ static int pop_tx_x(struct eg20t_port *priv, unsigned char *buf) | |||
| 667 | 667 | ||
| 668 | static int dma_push_rx(struct eg20t_port *priv, int size) | 668 | static int dma_push_rx(struct eg20t_port *priv, int size) |
| 669 | { | 669 | { |
| 670 | struct tty_struct *tty; | ||
| 671 | int room; | 670 | int room; |
| 672 | struct uart_port *port = &priv->port; | 671 | struct uart_port *port = &priv->port; |
| 673 | struct tty_port *tport = &port->state->port; | 672 | struct tty_port *tport = &port->state->port; |
| 674 | 673 | ||
| 675 | port = &priv->port; | ||
| 676 | tty = tty_port_tty_get(tport); | ||
| 677 | if (!tty) { | ||
| 678 | dev_dbg(priv->port.dev, "%s:tty is busy now", __func__); | ||
| 679 | return 0; | ||
| 680 | } | ||
| 681 | |||
| 682 | room = tty_buffer_request_room(tport, size); | 674 | room = tty_buffer_request_room(tport, size); |
| 683 | 675 | ||
| 684 | if (room < size) | 676 | if (room < size) |
| 685 | dev_warn(port->dev, "Rx overrun: dropping %u bytes\n", | 677 | dev_warn(port->dev, "Rx overrun: dropping %u bytes\n", |
| 686 | size - room); | 678 | size - room); |
| 687 | if (!room) | 679 | if (!room) |
| 688 | goto out; | 680 | return 0; |
| 689 | 681 | ||
| 690 | tty_insert_flip_string(tport, sg_virt(&priv->sg_rx), size); | 682 | tty_insert_flip_string(tport, sg_virt(&priv->sg_rx), size); |
| 691 | 683 | ||
| 692 | port->icount.rx += room; | 684 | port->icount.rx += room; |
| 693 | out: | ||
| 694 | tty_kref_put(tty); | ||
| 695 | 685 | ||
| 696 | return room; | 686 | return room; |
| 697 | } | 687 | } |
