]> git.baikalelectronics.ru Git - kernel.git/commit
tty: Change tty lock order to master->slave
authorPeter Hurley <peter@hurleysoftware.com>
Wed, 5 Nov 2014 17:13:01 +0000 (12:13 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 6 Nov 2014 02:50:42 +0000 (18:50 -0800)
commit1ceb59ab5938a3afecf822886dc1de8c8e07fa24
tree8c43d997c471b171f8929fee681c1650c0f06c57
parent2651d4b594211ec42b9b0079f0ce062e6b0e8aa3
tty: Change tty lock order to master->slave

When releasing the master pty, the slave pty also needs to be locked
to prevent concurrent tty count changes for the slave pty and to
ensure that only one parallel master and slave release observe the
final close, and proceed to destruct the pty pair. Conversely, when
releasing the slave pty, locking the master pty is not necessary
(since the master's state can be inferred by the slave tty count).

Introduce tty_lock_slave()/tty_unlock_slave() which acquires/releases
the tty lock of the slave pty. Remove tty_lock_pair()/tty_unlock_pair().

Dropping the tty_lock is no longer required to re-establish a stable
lock order.

Reviewed-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/tty_io.c
drivers/tty/tty_mutex.c
include/linux/tty.h