diff options
| -rw-r--r-- | drivers/tty/tty_ioctl.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/tty/tty_ioctl.c b/drivers/tty/tty_ioctl.c index a5cf253b2544..89ae23ac9ae6 100644 --- a/drivers/tty/tty_ioctl.c +++ b/drivers/tty/tty_ioctl.c | |||
| @@ -217,11 +217,17 @@ void tty_wait_until_sent(struct tty_struct *tty, long timeout) | |||
| 217 | #endif | 217 | #endif |
| 218 | if (!timeout) | 218 | if (!timeout) |
| 219 | timeout = MAX_SCHEDULE_TIMEOUT; | 219 | timeout = MAX_SCHEDULE_TIMEOUT; |
| 220 | |||
| 220 | if (wait_event_interruptible_timeout(tty->write_wait, | 221 | if (wait_event_interruptible_timeout(tty->write_wait, |
| 221 | !tty_chars_in_buffer(tty), timeout) >= 0) { | 222 | !tty_chars_in_buffer(tty), timeout) < 0) { |
| 222 | if (tty->ops->wait_until_sent) | 223 | return; |
| 223 | tty->ops->wait_until_sent(tty, timeout); | ||
| 224 | } | 224 | } |
| 225 | |||
| 226 | if (timeout == MAX_SCHEDULE_TIMEOUT) | ||
| 227 | timeout = 0; | ||
| 228 | |||
| 229 | if (tty->ops->wait_until_sent) | ||
| 230 | tty->ops->wait_until_sent(tty, timeout); | ||
| 225 | } | 231 | } |
| 226 | EXPORT_SYMBOL(tty_wait_until_sent); | 232 | EXPORT_SYMBOL(tty_wait_until_sent); |
| 227 | 233 | ||
