Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[sfrench/cifs-2.6.git] / drivers / tty / tty_io.c
index 687250ec8032359f7ccdd0bfbd2b6e8b3bb4e1f5..bfe9ad85b3624529e1210c435a5b22318461690c 100644 (file)
@@ -1268,14 +1268,16 @@ static int tty_reopen(struct tty_struct *tty)
        if (test_bit(TTY_EXCLUSIVE, &tty->flags) && !capable(CAP_SYS_ADMIN))
                return -EBUSY;
 
-       tty->count++;
+       retval = tty_ldisc_lock(tty, 5 * HZ);
+       if (retval)
+               return retval;
 
-       if (tty->ldisc)
-               return 0;
+       if (!tty->ldisc)
+               retval = tty_ldisc_reinit(tty, tty->termios.c_line);
+       tty_ldisc_unlock(tty);
 
-       retval = tty_ldisc_reinit(tty, tty->termios.c_line);
-       if (retval)
-               tty->count--;
+       if (retval == 0)
+               tty->count++;
 
        return retval;
 }