]> git.baikalelectronics.ru Git - kernel.git/commit
rxrpc: Fix handling of rwind from an ACK packet
authorDavid Howells <dhowells@redhat.com>
Wed, 17 Jun 2020 22:01:23 +0000 (23:01 +0100)
committerDavid Howells <dhowells@redhat.com>
Wed, 17 Jun 2020 22:01:32 +0000 (23:01 +0100)
commit24c4823c156446ac61115c0f89ff76c234bafadb
tree1222338cec6c4b62cc88fd5b8d804151c79d081a
parentb08e86a66adb8618ec5e7be7c644eb9d1ae961a9
rxrpc: Fix handling of rwind from an ACK packet

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: 5fa652cf5887 ("rxrpc: Wake up the transmitter if Rx window size increases on the peer")
Signed-off-by: David Howells <dhowells@redhat.com>
net/rxrpc/input.c