Re: Subject: [PATCH] tty ldisc: Close/Reopen race prevention shouldcheck the proper flag

From: Shachar Shemesh
Date: Sun Jul 08 2012 - 04:59:25 EST


On 07/07/2012 12:24 AM, Greg KH wrote:
On Sun, Jul 01, 2012 at 09:53:19AM +0300, Shachar Shemesh wrote:
From: Shachar Shemesh <shachar@xxxxxxxx>

Commit acfa747b introduced the TTY_HUPPING flag to distinguish
closed TTY from currently closing ones. The test in tty_set_ldisc
still remained pointing at the old flag. This causes pppd to
sometimes lapse into uninterruptible sleep when killed and
restarted.

Signed-off-by: Shachar Shemesh <shachar@xxxxxxxx>
---
Tested with 3.2.20 kernel.

All tabs are converted to spaces and make this patch impossible to apply
:(

Care to try again?
I'm sorry, I'm sending this as an attachment. I've verified that my mailer sends this as plain text, so it should be okay.

Shachar

diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c
index 24b95db..a662a24 100644
--- a/drivers/tty/tty_ldisc.c
+++ b/drivers/tty/tty_ldisc.c
@@ -658,7 +658,7 @@ int tty_set_ldisc(struct tty_struct *tty, int ldisc)
goto enable;
}

- if (test_bit(TTY_HUPPED, &tty->flags)) {
+ if (test_bit(TTY_HUPPING, &tty->flags)) {
/* We were raced by the hangup method. It will have stomped
the ldisc data and closed the ldisc down */
clear_bit(TTY_LDISC_CHANGING, &tty->flags);