linux/net/rxrpc
David Howells 62745e5744 rxrpc: Fix handling of rwind from an ACK packet
[ Upstream commit a2ad7c21ad ]

The handling of the receive window size (rwind) from a received ACK packet
is not correct.  The rxrpc_input_ackinfo() function currently checks the
current Tx window size against the rwind from the ACK to see if it has
changed, but then limits the rwind size before storing it in the tx_winsize
member and, if it increased, wake up the transmitting process.  This means
that if rwind > RXRPC_RXTX_BUFF_SIZE - 1, this path will always be
followed.

Fix this by limiting rwind before we compare it to tx_winsize.

The effect of this can be seen by enabling the rxrpc_rx_rwind_change
tracepoint.

Fixes: 702f2ac87a ("rxrpc: Wake up the transmitter if Rx window size increases on the peer")
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-06-30 23:17:11 -04:00
..
af_rxrpc.c rxrpc: Fix missing active use pinning of rxrpc_local object 2020-02-11 04:33:54 -08:00
ar-internal.h rxrpc: Fix NULL pointer deref due to call->conn being cleared on disconnect 2020-02-11 04:33:54 -08:00
call_accept.c rxrpc: Fix notification call on completion of discarded calls 2020-06-30 23:17:04 -04:00
call_event.c rxrpc: Fix lockup due to no error backoff after ack transmit error 2018-11-23 08:17:07 +01:00
call_object.c rxrpc: Fix call RCU cleanup using non-bh-safe locks 2020-02-28 16:39:00 +01:00
conn_client.c rxrpc: Fix NULL pointer deref due to call->conn being cleared on disconnect 2020-02-11 04:33:54 -08:00
conn_event.c rxrpc: Fix missing active use pinning of rxrpc_local object 2020-02-11 04:33:54 -08:00
conn_object.c rxrpc: Fix service call disconnection 2020-02-11 04:34:19 -08:00
conn_service.c rxrpc: Fix trace-after-put looking at the put connection record 2020-01-27 14:51:16 +01:00
input.c rxrpc: Fix handling of rwind from an ACK packet 2020-06-30 23:17:11 -04:00
insecure.c
Kconfig
key.c KEYS: Don't write out to userspace while holding key semaphore 2020-04-23 10:30:24 +02:00
local_event.c rxrpc: Trace packet transmission 2018-08-01 13:28:23 +01:00
local_object.c rxrpc: Fix DATA Tx to disable nofrag for UDP on AF_INET6 socket 2020-05-02 17:25:51 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
misc.c rxrpc: Fix call timeouts 2017-11-24 10:18:41 +00:00
net_ns.c rxrpc: Fix the keepalive generator [ver #2] 2018-08-08 19:10:26 -07:00
output.c rxrpc: Fix DATA Tx to disable nofrag for UDP on AF_INET6 socket 2020-05-02 17:25:51 +02:00
peer_event.c rxrpc: Fix missing active use pinning of rxrpc_local object 2020-02-11 04:33:54 -08:00
peer_object.c rxrpc: Fix trace-after-put looking at the put peer record 2019-11-06 13:06:24 +01:00
proc.c rxrpc: Adjust /proc/net/rxrpc/calls to display call->debug_id not user_ID 2020-06-25 15:33:01 +02:00
protocol.h rxrpc: Improve up-front incoming packet checking 2018-09-28 10:32:31 +01:00
recvmsg.c rxrpc: bad unlock balance in rxrpc_recvmsg 2019-02-12 19:47:22 +01:00
rxkad.c rxrpc: Fix a memory leak in rxkad_verify_response() 2020-05-27 17:37:44 +02:00
security.c rxrpc: remove unused static variables 2018-03-30 21:04:44 +01:00
sendmsg.c rxrpc: Fix sendmsg(MSG_WAITALL) handling 2020-04-13 10:45:04 +02:00
skbuff.c
sysctl.c rxrpc: remove redundant static int 'zero' 2018-08-11 11:25:18 -07:00
utils.c