tty: Make lock subclasses available for other tty locks
Besides nested legacy_mutex locking which is required on pty pair teardown, other nested pty operations require lock subclassing. Move lock subclass definition to tty interface header, include/linux/tty.h, and document its use. Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
fb5ef9e7da
commit
3abf87cd3e
|
@ -4,18 +4,8 @@
|
|||
#include <linux/semaphore.h>
|
||||
#include <linux/sched.h>
|
||||
|
||||
/*
|
||||
* Nested tty locks are necessary for releasing pty pairs.
|
||||
* The stable lock order is master pty first, then slave pty.
|
||||
*/
|
||||
|
||||
/* Legacy tty mutex glue */
|
||||
|
||||
enum {
|
||||
TTY_MUTEX_NORMAL,
|
||||
TTY_MUTEX_SLAVE,
|
||||
};
|
||||
|
||||
/*
|
||||
* Getting the big tty mutex.
|
||||
*/
|
||||
|
@ -58,5 +48,5 @@ void __lockfunc tty_unlock_slave(struct tty_struct *tty)
|
|||
|
||||
void tty_set_lock_subclass(struct tty_struct *tty)
|
||||
{
|
||||
lockdep_set_subclass(&tty->legacy_mutex, TTY_MUTEX_SLAVE);
|
||||
lockdep_set_subclass(&tty->legacy_mutex, TTY_LOCK_SLAVE);
|
||||
}
|
||||
|
|
|
@ -14,6 +14,23 @@
|
|||
#include <linux/llist.h>
|
||||
|
||||
|
||||
/*
|
||||
* Lock subclasses for tty locks
|
||||
*
|
||||
* TTY_LOCK_NORMAL is for normal ttys and master ptys.
|
||||
* TTY_LOCK_SLAVE is for slave ptys only.
|
||||
*
|
||||
* Lock subclasses are necessary for handling nested locking with pty pairs.
|
||||
* tty locks which use nested locking:
|
||||
*
|
||||
* legacy_mutex - Nested tty locks are necessary for releasing pty pairs.
|
||||
* The stable lock order is master pty first, then slave pty.
|
||||
*/
|
||||
|
||||
enum {
|
||||
TTY_LOCK_NORMAL = 0,
|
||||
TTY_LOCK_SLAVE,
|
||||
};
|
||||
|
||||
/*
|
||||
* (Note: the *_driver.minor_start values 1, 64, 128, 192 are
|
||||
|
|
Loading…
Reference in New Issue