diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
index e562b1224466a..9f72be28e6f2c 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -243,6 +243,13 @@ static void uart_shutdown(struct tty_struct *tty, struct uart_state *state)
 		synchronize_irq(uport->irq);
 	}
 
+	/*
+	 * It's possible for shutdown to be called after suspend if we get
+	 * a DCD drop (hangup) at just the right time.  Clear suspended bit so
+	 * we don't try to resume a port that has been shutdown.
+	 */
+	clear_bit(ASYNCB_SUSPENDED, &port->flags);
+
 	/*
 	 * Free the transmit buffer page.
 	 */