diff options
Diffstat (limited to 'drivers/serial/serial_core.c')
| -rw-r--r-- | drivers/serial/serial_core.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c index 1689bda1d13..dcc72444e8e 100644 --- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c @@ -1270,6 +1270,9 @@ static void uart_close(struct tty_struct *tty, struct file *filp)  	BUG_ON(!kernel_locked()); +	if (!state) +		return; +  	uport = state->uart_port;  	port = &state->port; @@ -1316,9 +1319,9 @@ static void uart_close(struct tty_struct *tty, struct file *filp)  	 */  	if (port->flags & ASYNC_INITIALIZED) {  		unsigned long flags; -		spin_lock_irqsave(&port->lock, flags); +		spin_lock_irqsave(&uport->lock, flags);  		uport->ops->stop_rx(uport); -		spin_unlock_irqrestore(&port->lock, flags); +		spin_unlock_irqrestore(&uport->lock, flags);  		/*  		 * Before we drop DTR, make sure the UART transmitter  		 * has completely drained; this is especially  |