| From 2c3fbe3cf28fbd7001545a92a83b4f8acfd9fa36 Mon Sep 17 00:00:00 2001 |
| From: Johan Hovold <johan@kernel.org> |
| Date: Wed, 4 Mar 2015 10:39:03 +0100 |
| Subject: net: irda: fix wait_until_sent poll timeout |
| |
| From: Johan Hovold <johan@kernel.org> |
| |
| commit 2c3fbe3cf28fbd7001545a92a83b4f8acfd9fa36 upstream. |
| |
| In case an infinite timeout (0) is requested, the irda wait_until_sent |
| implementation would use a zero poll timeout rather than the default |
| 200ms. |
| |
| Note that wait_until_sent is currently never called with a 0-timeout |
| argument due to a bug in tty_wait_until_sent. |
| |
| Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") |
| Signed-off-by: Johan Hovold <johan@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| net/irda/ircomm/ircomm_tty.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/net/irda/ircomm/ircomm_tty.c |
| +++ b/net/irda/ircomm/ircomm_tty.c |
| @@ -798,7 +798,9 @@ static void ircomm_tty_wait_until_sent(s |
| orig_jiffies = jiffies; |
| |
| /* Set poll time to 200 ms */ |
| - poll_time = IRDA_MIN(timeout, msecs_to_jiffies(200)); |
| + poll_time = msecs_to_jiffies(200); |
| + if (timeout) |
| + poll_time = min_t(unsigned long, timeout, poll_time); |
| |
| spin_lock_irqsave(&self->spinlock, flags); |
| while (self->tx_skb && self->tx_skb->len) { |