|
|
@@ -1255,6 +1255,7 @@ static void tty_driver_remove_tty(struct tty_driver *driver, struct tty_struct *
|
|
|
static int tty_reopen(struct tty_struct *tty)
|
|
|
{
|
|
|
struct tty_driver *driver = tty->driver;
|
|
|
+ int retval;
|
|
|
|
|
|
if (driver->type == TTY_DRIVER_TYPE_PTY &&
|
|
|
driver->subtype == PTY_TYPE_MASTER)
|
|
|
@@ -1268,10 +1269,14 @@ static int tty_reopen(struct tty_struct *tty)
|
|
|
|
|
|
tty->count++;
|
|
|
|
|
|
- if (!tty->ldisc)
|
|
|
- return tty_ldisc_reinit(tty, tty->termios.c_line);
|
|
|
+ if (tty->ldisc)
|
|
|
+ return 0;
|
|
|
|
|
|
- return 0;
|
|
|
+ retval = tty_ldisc_reinit(tty, tty->termios.c_line);
|
|
|
+ if (retval)
|
|
|
+ tty->count--;
|
|
|
+
|
|
|
+ return retval;
|
|
|
}
|
|
|
|
|
|
/**
|