OSDN Git Service

tty: Remove TTY_CLOSING
authorPeter Hurley <peter@hurleysoftware.com>
Wed, 5 Nov 2014 17:12:52 +0000 (12:12 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 6 Nov 2014 02:24:10 +0000 (18:24 -0800)
Now that re-open is not permitted for a legacy BSD pty master,
using TTY_CLOSING to indicate when a tty can be torn-down is
no longer necessary.

Reviewed-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/tty_io.c
include/linux/tty.h

index 66d6bcc..ea8c6ca 100644 (file)
@@ -1197,7 +1197,7 @@ 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 && !test_bit(TTY_CLOSING, &tty->flags)) {
+               if (tty->ops->write && tty->count > 0) {
                        tty_unlock(tty);
                        tty->ops->write(tty, msg, strlen(msg));
                } else
@@ -1879,16 +1879,6 @@ int tty_release(struct inode *inode, struct file *filp)
        /*
         * Perform some housekeeping before deciding whether to return.
         *
-        * Set the TTY_CLOSING flag if this was the last open.  In the
-        * case of a pty we may have to wait around for the other side
-        * to close, and TTY_CLOSING makes sure we can't be reopened.
-        */
-       if (tty_closing)
-               set_bit(TTY_CLOSING, &tty->flags);
-       if (o_tty_closing)
-               set_bit(TTY_CLOSING, &o_tty->flags);
-
-       /*
         * If _either_ side is closing, make sure there aren't any
         * processes that still think tty or o_tty is their controlling
         * tty.
@@ -1903,7 +1893,7 @@ int tty_release(struct inode *inode, struct file *filp)
 
        mutex_unlock(&tty_mutex);
        tty_unlock_pair(tty, o_tty);
-       /* At this point the TTY_CLOSING flag should ensure a dead tty
+       /* At this point, the tty->count == 0 should ensure a dead tty
           cannot be re-opened by a racing opener */
 
        /* check whether both sides are closing ... */
index ff0dd7a..35b29f0 100644 (file)
@@ -316,7 +316,6 @@ struct tty_file_private {
 #define TTY_EXCLUSIVE          3       /* Exclusive open mode */
 #define TTY_DEBUG              4       /* Debugging */
 #define TTY_DO_WRITE_WAKEUP    5       /* Call write_wakeup after queuing new */
-#define TTY_CLOSING            7       /* ->close() in progress */
 #define TTY_LDISC_OPEN         11      /* Line discipline is open */
 #define TTY_PTY_LOCK           16      /* pty private */
 #define TTY_NO_WRITE_SPLIT     17      /* Preserve write boundaries to driver */