tty: Prevent tty teardown during tty_write_message()
authorPeter Hurley <peter@hurleysoftware.com>
Sun, 11 Oct 2015 00:28:44 +0000 (20:28 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 18 Oct 2015 04:30:49 +0000 (21:30 -0700)
tty_write_message() allows the caller to directly write to a specific
tty. Since the line discipline is bypassed for the direct write,
nothing prevents the tty from being torn down after the tty count is
checked.

Hold the tty lock for the duration of the direct write.

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/tty_io.c

index 071671a8674ff45f5eed6ff98c40c4bffdb1ad67..173fdeba09870d2de43a3f69b2a53721a7e8adf2 100644 (file)
@@ -1200,11 +1200,9 @@ void tty_write_message(struct tty_struct *tty, char *msg)
        if (tty) {
                mutex_lock(&tty->atomic_write_lock);
                tty_lock(tty);
-               if (tty->ops->write && tty->count > 0) {
-                       tty_unlock(tty);
+               if (tty->ops->write && tty->count > 0)
                        tty->ops->write(tty, msg, strlen(msg));
-               } else
-                       tty_unlock(tty);
+               tty_unlock(tty);
                tty_write_unlock(tty);
        }
        return;