Message ID | 20190108202811.12136-5-gpiccoli@canonical.com |
---|---|
State | New |
Headers | show |
Series | Line discipline buffer flush/tty_reopen() race fix | expand |
diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c index 83e57a328f2b..b273aeadbb51 100644 --- a/drivers/tty/tty_io.c +++ b/drivers/tty/tty_io.c @@ -1271,16 +1271,13 @@ static int tty_reopen(struct tty_struct *tty) if (retval) return retval; - tty->count++; - if (tty->ldisc) - goto out_unlock; - - retval = tty_ldisc_reinit(tty, tty->termios.c_line); - if (retval) - tty->count--; - -out_unlock: + if (!tty->ldisc) + retval = tty_ldisc_reinit(tty, tty->termios.c_line); tty_ldisc_unlock(tty); + + if (retval == 0) + tty->count++; + return retval; }