All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net] rxrpc: Fix terminal retransmission connection ID to include the channel
@ 2018-06-06 13:59 David Howells
  2018-06-06 18:04 ` David Miller
  0 siblings, 1 reply; 2+ messages in thread
From: David Howells @ 2018-06-06 13:59 UTC (permalink / raw)
  To: netdev; +Cc: dhowells, linux-afs, linux-kernel

When retransmitting the final ACK or ABORT packet for a call, the cid field
in the packet header is set to the connection's cid, but this is incorrect
as it also needs to include the channel number on that connection that the
call was made on.

Fix this by OR'ing in the channel number.

Note that this fixes the bug that:

	commit 1a025028d400b23477341aa7ec2ce55f8b39b554
	rxrpc: Fix handling of call quietly cancelled out on server

works around.  I'm not intending to revert that as it will help protect
against problems that might occur on the server.

Fixes: 3136ef49a14c ("rxrpc: Delay terminal ACK transmission on a client call")
Signed-off-by: David Howells <dhowells@redhat.com>
---

 net/rxrpc/conn_event.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/rxrpc/conn_event.c b/net/rxrpc/conn_event.c
index 1350f1be8037..8229a52c2acd 100644
--- a/net/rxrpc/conn_event.c
+++ b/net/rxrpc/conn_event.c
@@ -70,7 +70,7 @@ static void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn,
 	iov[2].iov_len	= sizeof(ack_info);
 
 	pkt.whdr.epoch		= htonl(conn->proto.epoch);
-	pkt.whdr.cid		= htonl(conn->proto.cid);
+	pkt.whdr.cid		= htonl(conn->proto.cid | channel);
 	pkt.whdr.callNumber	= htonl(call_id);
 	pkt.whdr.seq		= 0;
 	pkt.whdr.type		= chan->last_type;

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH net] rxrpc: Fix terminal retransmission connection ID to include the channel
  2018-06-06 13:59 [PATCH net] rxrpc: Fix terminal retransmission connection ID to include the channel David Howells
@ 2018-06-06 18:04 ` David Miller
  0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2018-06-06 18:04 UTC (permalink / raw)
  To: dhowells; +Cc: netdev, linux-afs, linux-kernel

From: David Howells <dhowells@redhat.com>
Date: Wed, 06 Jun 2018 14:59:14 +0100

> When retransmitting the final ACK or ABORT packet for a call, the cid field
> in the packet header is set to the connection's cid, but this is incorrect
> as it also needs to include the channel number on that connection that the
> call was made on.
> 
> Fix this by OR'ing in the channel number.
> 
> Note that this fixes the bug that:
> 
> 	commit 1a025028d400b23477341aa7ec2ce55f8b39b554
> 	rxrpc: Fix handling of call quietly cancelled out on server
> 
> works around.  I'm not intending to revert that as it will help protect
> against problems that might occur on the server.
> 
> Fixes: 3136ef49a14c ("rxrpc: Delay terminal ACK transmission on a client call")
> Signed-off-by: David Howells <dhowells@redhat.com>

Applid, thanks David.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-06-06 18:04 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-06 13:59 [PATCH net] rxrpc: Fix terminal retransmission connection ID to include the channel David Howells
2018-06-06 18:04 ` David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.