diff options
author | Peter Hurley <peter@hurleysoftware.com> | 2014-11-05 20:40:03 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-11-07 01:57:27 +0300 |
commit | 633caba8932d9ba2f79bbcb7573e58eae3fdac68 (patch) | |
tree | ed7b7096ce6174150109835d23d76ecc659286e6 /drivers/tty/tty_port.c | |
parent | 19038ad9f08c96dcff870b18af8fd5ae5141dec1 (diff) | |
download | linux-633caba8932d9ba2f79bbcb7573e58eae3fdac68.tar.xz |
tty: Move tty hung up check from port->lock critical section
The port->lock does not protect the filp->f_op field; move
the tty_hung_up_p() test outside the port->lock critical section
in tty_port_close_start().
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/tty_port.c')
-rw-r--r-- | drivers/tty/tty_port.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c index 1b9335796da4..3b641d115fd2 100644 --- a/drivers/tty/tty_port.c +++ b/drivers/tty/tty_port.c @@ -473,12 +473,10 @@ int tty_port_close_start(struct tty_port *port, { unsigned long flags; - spin_lock_irqsave(&port->lock, flags); - if (tty_hung_up_p(filp)) { - spin_unlock_irqrestore(&port->lock, flags); + if (tty_hung_up_p(filp)) return 0; - } + spin_lock_irqsave(&port->lock, flags); if (tty->count == 1 && port->count != 1) { printk(KERN_WARNING "tty_port_close_start: tty->count = 1 port count = %d.\n", |