diff options
Diffstat (limited to 'drivers/tty/pty.c')
-rw-r--r-- | drivers/tty/pty.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c index e72ee629cead..4d5e8409769c 100644 --- a/drivers/tty/pty.c +++ b/drivers/tty/pty.c | |||
@@ -53,9 +53,8 @@ static void pty_close(struct tty_struct *tty, struct file *filp) | |||
53 | /* Review - krefs on tty_link ?? */ | 53 | /* Review - krefs on tty_link ?? */ |
54 | if (!tty->link) | 54 | if (!tty->link) |
55 | return; | 55 | return; |
56 | tty_flush_to_ldisc(tty->link); | ||
57 | set_bit(TTY_OTHER_CLOSED, &tty->link->flags); | 56 | set_bit(TTY_OTHER_CLOSED, &tty->link->flags); |
58 | wake_up_interruptible(&tty->link->read_wait); | 57 | tty_flip_buffer_push(tty->link->port); |
59 | wake_up_interruptible(&tty->link->write_wait); | 58 | wake_up_interruptible(&tty->link->write_wait); |
60 | if (tty->driver->subtype == PTY_TYPE_MASTER) { | 59 | if (tty->driver->subtype == PTY_TYPE_MASTER) { |
61 | set_bit(TTY_OTHER_CLOSED, &tty->flags); | 60 | set_bit(TTY_OTHER_CLOSED, &tty->flags); |
@@ -243,7 +242,9 @@ static int pty_open(struct tty_struct *tty, struct file *filp) | |||
243 | goto out; | 242 | goto out; |
244 | 243 | ||
245 | clear_bit(TTY_IO_ERROR, &tty->flags); | 244 | clear_bit(TTY_IO_ERROR, &tty->flags); |
245 | /* TTY_OTHER_CLOSED must be cleared before TTY_OTHER_DONE */ | ||
246 | clear_bit(TTY_OTHER_CLOSED, &tty->link->flags); | 246 | clear_bit(TTY_OTHER_CLOSED, &tty->link->flags); |
247 | clear_bit(TTY_OTHER_DONE, &tty->link->flags); | ||
247 | set_bit(TTY_THROTTLED, &tty->flags); | 248 | set_bit(TTY_THROTTLED, &tty->flags); |
248 | return 0; | 249 | return 0; |
249 | 250 | ||