serial: core: Fix port count when uart_open() errors
authorPeter Hurley <peter@hurleysoftware.com>
Thu, 16 Oct 2014 20:54:27 +0000 (16:54 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 6 Nov 2014 02:53:55 +0000 (18:53 -0800)
commit91b32f5413c17e80ac6616dd9c62e826fa438e2d
tree89137cf0355ed9a12874bd414e4023980e69420f
parent64dbee31050d5b93b5fcda25508e4d3c69f6589c
serial: core: Fix port count when uart_open() errors

A port count mismatch occurs if mutex_lock_interruptible()
exits uart_open() and the port has already been opened. This may
prematurely close a port on an open tty. Since uart_close() is _always_
called if uart_open() fails, the port count must be corrected if errors
occur.

Always increment the port count in uart_open(), regardless of errors;
always decrement the port count in uart_close(). Note that
tty_port_close_start() decrements the port count when uart_open()
was successful.

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/serial_core.c