diff options
Diffstat (limited to 'drivers/tty/serial/serial_core.c')
-rw-r--r-- | drivers/tty/serial/serial_core.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index 2cf5649a6dc0..f26834d262b3 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c | |||
@@ -89,8 +89,7 @@ static void __uart_start(struct tty_struct *tty) | |||
89 | struct uart_state *state = tty->driver_data; | 89 | struct uart_state *state = tty->driver_data; |
90 | struct uart_port *port = state->uart_port; | 90 | struct uart_port *port = state->uart_port; |
91 | 91 | ||
92 | if (!uart_circ_empty(&state->xmit) && state->xmit.buf && | 92 | if (!tty->stopped && !tty->hw_stopped) |
93 | !tty->stopped && !tty->hw_stopped) | ||
94 | port->ops->start_tx(port); | 93 | port->ops->start_tx(port); |
95 | } | 94 | } |
96 | 95 | ||
@@ -1452,6 +1451,8 @@ static void uart_hangup(struct tty_struct *tty) | |||
1452 | clear_bit(ASYNCB_NORMAL_ACTIVE, &port->flags); | 1451 | clear_bit(ASYNCB_NORMAL_ACTIVE, &port->flags); |
1453 | spin_unlock_irqrestore(&port->lock, flags); | 1452 | spin_unlock_irqrestore(&port->lock, flags); |
1454 | tty_port_tty_set(port, NULL); | 1453 | tty_port_tty_set(port, NULL); |
1454 | if (!uart_console(state->uart_port)) | ||
1455 | uart_change_pm(state, UART_PM_STATE_OFF); | ||
1455 | wake_up_interruptible(&port->open_wait); | 1456 | wake_up_interruptible(&port->open_wait); |
1456 | wake_up_interruptible(&port->delta_msr_wait); | 1457 | wake_up_interruptible(&port->delta_msr_wait); |
1457 | } | 1458 | } |