| From 91fb3df6f0d671dcccf0d5f88e3e07b1fbe2991e Mon Sep 17 00:00:00 2001 |
| From: David Howells <dhowells@redhat.com> |
| Date: Fri, 13 Mar 2020 17:30:27 +0000 |
| Subject: [PATCH] rxrpc: Fix sendmsg(MSG_WAITALL) handling |
| |
| commit 498b577660f08cef5d9e78e0ed6dcd4c0939e98c upstream. |
| |
| Fix the handling of sendmsg() with MSG_WAITALL for userspace to round the |
| timeout for when a signal occurs up to at least two jiffies as a 1 jiffy |
| timeout may end up being effectively 0 if jiffies wraps at the wrong time. |
| |
| Fixes: bc5e3a546d55 ("rxrpc: Use MSG_WAITALL to tell sendmsg() to temporarily ignore signals") |
| Signed-off-by: David Howells <dhowells@redhat.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/net/rxrpc/sendmsg.c b/net/rxrpc/sendmsg.c |
| index f0bdac412a36..959db2f16e97 100644 |
| --- a/net/rxrpc/sendmsg.c |
| +++ b/net/rxrpc/sendmsg.c |
| @@ -58,8 +58,8 @@ static int rxrpc_wait_for_tx_window_nonintr(struct rxrpc_sock *rx, |
| |
| rtt = READ_ONCE(call->peer->rtt); |
| rtt2 = nsecs_to_jiffies64(rtt) * 2; |
| - if (rtt2 < 1) |
| - rtt2 = 1; |
| + if (rtt2 < 2) |
| + rtt2 = 2; |
| |
| timeout = rtt2; |
| tx_start = READ_ONCE(call->tx_hard_ack); |
| -- |
| 2.7.4 |
| |