• Peter Hurley's avatar
    tty: Replace ldisc locking with ldisc_sem · 36697529
    Peter Hurley authored
    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: default avatarPeter Hurley <peter@hurleysoftware.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    36697529
tty_io.c 88.6 KB