|
@@ -694,10 +694,8 @@ int tty_ldisc_reinit(struct tty_struct *tty, int disc)
|
|
|
tty_set_termios_ldisc(tty, disc);
|
|
|
retval = tty_ldisc_open(tty, tty->ldisc);
|
|
|
if (retval) {
|
|
|
- if (!WARN_ON(disc == N_TTY)) {
|
|
|
- tty_ldisc_put(tty->ldisc);
|
|
|
- tty->ldisc = NULL;
|
|
|
- }
|
|
|
+ tty_ldisc_put(tty->ldisc);
|
|
|
+ tty->ldisc = NULL;
|
|
|
}
|
|
|
return retval;
|
|
|
}
|
|
@@ -752,8 +750,9 @@ void tty_ldisc_hangup(struct tty_struct *tty, bool reinit)
|
|
|
|
|
|
if (tty->ldisc) {
|
|
|
if (reinit) {
|
|
|
- if (tty_ldisc_reinit(tty, tty->termios.c_line) < 0)
|
|
|
- tty_ldisc_reinit(tty, N_TTY);
|
|
|
+ if (tty_ldisc_reinit(tty, tty->termios.c_line) < 0 &&
|
|
|
+ tty_ldisc_reinit(tty, N_TTY) < 0)
|
|
|
+ WARN_ON(tty_ldisc_reinit(tty, N_NULL) < 0);
|
|
|
} else
|
|
|
tty_ldisc_kill(tty);
|
|
|
}
|