X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=drivers%2Fserial%2Fserial_core.c;h=dcc72444e8e7015e904c70d726a83873dbeff21e;hb=26a9ba160f50115ece48198608002600914932a7;hp=1689bda1d13b0b486096c584ec8d73da4464b965;hpb=f579bbcd9bb8b688df03191b92c56ab8af4d6322;p=cascardo%2Flinux.git diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c index 1689bda1d13b..dcc72444e8e7 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