Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 27d0fc43 authored by David Howells's avatar David Howells
Browse files

rxrpc: Don't transmit an ACK if there's no reason set



Don't transmit an ACK if call->ackr_reason in unset.  There's the
possibility of a race between recvmsg() sending an ACK and the background
processing thread trying to send the same one.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
parent dfa7d920
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -137,6 +137,11 @@ int rxrpc_send_call_packet(struct rxrpc_call *call, u8 type)
	switch (type) {
	case RXRPC_PACKET_TYPE_ACK:
		spin_lock_bh(&call->lock);
		if (!call->ackr_reason) {
			spin_unlock_bh(&call->lock);
			ret = 0;
			goto out;
		}
		n = rxrpc_fill_out_ack(call, pkt);
		call->ackr_reason = 0;