n_tty: Fix stuck write wakeup
If signal-driven i/o is disabled while write wakeup is pending (ie., n_tty_write() has set TTY_DO_WRITE_WAKEUP but then signal-driven i/o is disabled), the TTY_DO_WRITE_WAKEUP bit will never be cleared and will cause tty_wakeup() to always call n_tty_write_wakeup. Unconditionally clear the write wakeup, and since kill_fasync() already checks if the fasync ptr is null, call kill_fasync() unconditionally as well. Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a8f3a29718
commit
7bccc36544
|
@ -228,8 +228,8 @@ static ssize_t chars_in_buffer(struct tty_struct *tty)
|
|||
|
||||
static void n_tty_write_wakeup(struct tty_struct *tty)
|
||||
{
|
||||
if (tty->fasync && test_and_clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags))
|
||||
kill_fasync(&tty->fasync, SIGIO, POLL_OUT);
|
||||
clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
|
||||
kill_fasync(&tty->fasync, SIGIO, POLL_OUT);
|
||||
}
|
||||
|
||||
static void n_tty_check_throttle(struct tty_struct *tty)
|
||||
|
|
Loading…
Reference in New Issue