mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
rxrpc: Fix response to PING RESPONSE ACKs to a dead call
[ Upstream commit6f769f2282
] Stop rxrpc from sending a DUP ACK in response to a PING RESPONSE ACK on a dead call. We may have initiated the ping but the call may have beaten the response to completion. Fixes:18bfeba50d
("rxrpc: Perform terminal call ACK/ABORT retransmission from conn processor") Signed-off-by: David Howells <dhowells@redhat.com> cc: Marc Dionne <marc.dionne@auristor.com> cc: "David S. Miller" <davem@davemloft.net> cc: Eric Dumazet <edumazet@google.com> cc: Jakub Kicinski <kuba@kernel.org> cc: Paolo Abeni <pabeni@redhat.com> cc: linux-afs@lists.infradead.org cc: netdev@vger.kernel.org Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
05a4d0e166
commit
cf6b97e183
@ -41,6 +41,14 @@ static void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn,
|
||||
|
||||
_enter("%d", conn->debug_id);
|
||||
|
||||
if (sp && sp->hdr.type == RXRPC_PACKET_TYPE_ACK) {
|
||||
if (skb_copy_bits(skb, sizeof(struct rxrpc_wire_header),
|
||||
&pkt.ack, sizeof(pkt.ack)) < 0)
|
||||
return;
|
||||
if (pkt.ack.reason == RXRPC_ACK_PING_RESPONSE)
|
||||
return;
|
||||
}
|
||||
|
||||
chan = &conn->channels[channel];
|
||||
|
||||
/* If the last call got moved on whilst we were waiting to run, just
|
||||
|
Loading…
Reference in New Issue
Block a user