tty: Replace ldisc locking with ldisc_sem
Line discipline locking was performed with a combination of a mutex, a status bit, a count, and a waitqueue -- basically, a rw semaphore. Replace the existing combination with an ld_semaphore. Fixes: 1) the 'reference acquire after ldisc locked' bug 2) the over-complicated halt mechanism 3) lock order wrt. tty_lock() 4) dropping locks while changing ldisc 5) previously unidentified deadlock while locking ldisc from both linked ttys concurrently 6) previously unidentified recursive deadlocks Adds much-needed lockdep diagnostics. Signed-off-by:Peter Hurley <peter@hurleysoftware.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Showing
- drivers/tty/tty_buffer.c 1 addition, 1 deletiondrivers/tty/tty_buffer.c
- drivers/tty/tty_io.c 3 additions, 4 deletionsdrivers/tty/tty_io.c
- drivers/tty/tty_ldisc.c 46 additions, 283 deletionsdrivers/tty/tty_ldisc.c
- include/linux/tty.h 1 addition, 3 deletionsinclude/linux/tty.h
- include/linux/tty_ldisc.h 1 addition, 2 deletionsinclude/linux/tty_ldisc.h
Loading
Please register or sign in to comment