mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
rxrpc: Fix insufficient receive notification generation
[ Upstream commitf71dbf2fb2] In rxrpc_input_data(), rxrpc_notify_socket() is called if the base sequence number of the packet is immediately following the hard-ack point at the end of the function. However, this isn't sufficient, since the recvmsg side may have been advancing the window and then overrun the position in which we're adding - at which point rx_hard_ack >= seq0 and no notification is generated. Fix this by always generating a notification at the end of the input function. Without this, a long call may stall, possibly indefinitely. Fixes:248f219cb8("rxrpc: Rewrite the data and ack handling code") Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b974ac51f5
commit
362f28fc8d
@@ -582,8 +582,7 @@ ack:
|
||||
immediate_ack, true,
|
||||
rxrpc_propose_ack_input_data);
|
||||
|
||||
if (sp->hdr.seq == READ_ONCE(call->rx_hard_ack) + 1)
|
||||
rxrpc_notify_socket(call);
|
||||
rxrpc_notify_socket(call);
|
||||
_leave(" [queued]");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user