2014-12-30 12:17:29

by Peter Hurley

[permalink] [raw]
Subject: [PATCH] Revert "tty: Fix pty master poll() after slave closes v2"

This reverts commit c4dc304677e8d566572c4738d95c48be150c6606.
This fix is superseded by commit 52bce7f8d4fc633c9a9d0646eef58ba6ae9a3b73,
'pty, n_tty: Simplify input processing on final close'.

The final close now waits for input processing to complete before
destroying the pty, so poll() does not need to special case this
condition.

Cc: Francesco Ruggeri <[email protected]>
Signed-off-by: Peter Hurley <[email protected]>
---
drivers/tty/n_tty.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
index a618b10..d2dc10f 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,

poll_wait(file, &tty->read_wait, wait);
poll_wait(file, &tty->write_wait, wait);
- if (test_bit(TTY_OTHER_CLOSED, &tty->flags))
- mask |= POLLHUP;
if (input_available_p(tty, 1))
mask |= POLLIN | POLLRDNORM;
- else if (mask & POLLHUP) {
- tty_flush_to_ldisc(tty);
- if (input_available_p(tty, 1))
- mask |= POLLIN | POLLRDNORM;
- }
if (tty->packet && tty->link->ctrl_status)
mask |= POLLPRI | POLLIN | POLLRDNORM;
+ if (test_bit(TTY_OTHER_CLOSED, &tty->flags))
+ mask |= POLLHUP;
if (tty_hung_up_p(file))
mask |= POLLHUP;
if (!(mask & (POLLHUP | POLLIN | POLLRDNORM))) {
--
2.2.1


2014-12-30 12:31:14

by Peter Hurley

[permalink] [raw]
Subject: Re: [PATCH] Revert "tty: Fix pty master poll() after slave closes v2"

On 12/30/2014 07:17 AM, Peter Hurley wrote:
> This reverts commit c4dc304677e8d566572c4738d95c48be150c6606.
> This fix is superseded by commit 52bce7f8d4fc633c9a9d0646eef58ba6ae9a3b73,
> 'pty, n_tty: Simplify input processing on final close'.
>
> The final close now waits for input processing to complete before
> destroying the pty, so poll() does not need to special case this
> condition.

Greg,

As noted in this commit log, commit c4dc304677e8d566572c4738d95c48be150c6606,
'tty: Fix pty master poll() after slave closes v2', is not required
after commit 52bce7f8d4fc633c9a9d0646eef58ba6ae9a3b73,
'pty, n_tty: Simplify input processing on final close'

However, 'tty: Fix pty master poll() after slave closes v2' is appropriate
for stable back to v3.12.

Regards,
Peter Hurley