• Peter Hurley's avatar
    pty: Always return -EIO if slave BSD pty opened first · 55199ea3
    Peter Hurley authored
    Opening the slave BSD pty first already returns -EIO from the slave
    pty_open(), which in turn causes the newly installed tty pair to be
    released before returning from tty_open(). However, this can also
    cause a parallel master BSD pty open to fail because the pty pair
    destruction may already been taking place in tty_release().
    
    Failing at driver->install() if the slave pty is opened first ensures
    that a pty master open cannot fail, because the driver tables will
    not have been updated so tty_driver_lookup_tty() won't find the
    master pty (and attempt to "re-open" it).
    
    In turn, this guarantees that any tty with a tty->count == 0 is
    in final close (rather than never opened).
    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>
    55199ea3
pty.c 21.9 KB