• Peter Hurley's avatar
    tty: Drop tty_mutex before tty reopen · aa3cb814
    Peter Hurley authored
    Holding tty_mutex for a tty re-open is no longer necessary since
    "tty: Clarify re-open behavior of master ptys". Because the
    slave tty count is no longer accessed by tty_reopen(), holding
    tty_mutex to prevent concurrent final tty_release() of the slave
    pty is not required.
    
    As with "tty: Re-open /dev/tty without tty_mutex", holding a
    tty kref until the tty_lock is acquired is sufficient to ensure
    the tty has not been freed, which, in turn, is sufficient to
    ensure the tty_lock can be safely acquired and the tty count
    can be safely retrieved. A non-zero tty count with the tty lock
    held guarantees that release_tty() has not run and cannot
    run concurrently with tty_reopen().
    
    Change tty_driver_lookup_tty() to acquire the tty kref, which
    allows the tty_mutex to be dropped before acquiring the tty lock.
    Dropping the tty_mutex before attempting the tty_lock allows
    other ttys to be opened and released, without needing this
    tty_reopen() to complete.
    Reviewed-by: default avatarAlan Cox <alan@linux.intel.com>
    Signed-off-by: default avatarPeter Hurley <peter@hurleysoftware.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    aa3cb814
tty_io.c 88.5 KB