diff options
Diffstat (limited to 'drivers/tty/n_tty.c')
-rw-r--r-- | drivers/tty/n_tty.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c index d2b496750d59..4ddfa60c9222 100644 --- a/drivers/tty/n_tty.c +++ b/drivers/tty/n_tty.c | |||
@@ -2399,17 +2399,12 @@ static unsigned int n_tty_poll(struct tty_struct *tty, struct file *file, | |||
2399 | 2399 | ||
2400 | poll_wait(file, &tty->read_wait, wait); | 2400 | poll_wait(file, &tty->read_wait, wait); |
2401 | poll_wait(file, &tty->write_wait, wait); | 2401 | poll_wait(file, &tty->write_wait, wait); |
2402 | if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) | ||
2403 | mask |= POLLHUP; | ||
2404 | if (input_available_p(tty, 1)) | 2402 | if (input_available_p(tty, 1)) |
2405 | mask |= POLLIN | POLLRDNORM; | 2403 | mask |= POLLIN | POLLRDNORM; |
2406 | else if (mask & POLLHUP) { | ||
2407 | tty_flush_to_ldisc(tty); | ||
2408 | if (input_available_p(tty, 1)) | ||
2409 | mask |= POLLIN | POLLRDNORM; | ||
2410 | } | ||
2411 | if (tty->packet && tty->link->ctrl_status) | 2404 | if (tty->packet && tty->link->ctrl_status) |
2412 | mask |= POLLPRI | POLLIN | POLLRDNORM; | 2405 | mask |= POLLPRI | POLLIN | POLLRDNORM; |
2406 | if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) | ||
2407 | mask |= POLLHUP; | ||
2413 | if (tty_hung_up_p(file)) | 2408 | if (tty_hung_up_p(file)) |
2414 | mask |= POLLHUP; | 2409 | mask |= POLLHUP; |
2415 | if (!(mask & (POLLHUP | POLLIN | POLLRDNORM))) { | 2410 | if (!(mask & (POLLHUP | POLLIN | POLLRDNORM))) { |