diff options
author | Peter Hurley <peter@hurleysoftware.com> | 2014-11-05 12:40:03 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-11-06 14:57:27 -0800 |
commit | 633caba8932d9ba2f79bbcb7573e58eae3fdac68 (patch) | |
tree | ed7b7096ce6174150109835d23d76ecc659286e6 /drivers/tty/tty_port.c | |
parent | 19038ad9f08c96dcff870b18af8fd5ae5141dec1 (diff) | |
download | op-kernel-dev-633caba8932d9ba2f79bbcb7573e58eae3fdac68.zip op-kernel-dev-633caba8932d9ba2f79bbcb7573e58eae3fdac68.tar.gz |
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 1b93357..3b641d1 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", |