Patch "rxrpc: Clients must accept conn from any address" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    rxrpc: Clients must accept conn from any address

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     rxrpc-clients-must-accept-conn-from-any-address.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 2d3ed9bc0deebe91c447184222a142d56ab9ab57
Author: Jeffrey Altman <jaltman@xxxxxxxxxxxx>
Date:   Fri Apr 19 13:30:57 2024 -0300

    rxrpc: Clients must accept conn from any address
    
    [ Upstream commit 8953285d7bd63c12b007432a9b4587fa2fad49fb ]
    
    The find connection logic of Transarc's Rx was modified in the mid-1990s
    to support multi-homed servers which might send a response packet from
    an address other than the destination address in the received packet.
    The rules for accepting a packet by an Rx initiator (RX_CLIENT_CONNECTION)
    were altered to permit acceptance of a packet from any address provided
    that the port number was unchanged and all of the connection identifiers
    matched (Epoch, CID, SecurityClass, ...).
    
    This change applies the same rules to the Linux implementation which makes
    it consistent with IBM AFS 3.6, Arla, OpenAFS and AuriStorFS.
    
    Fixes: 17926a79320a ("[AF_RXRPC]: Provide secure RxRPC sockets for use by userspace and kernel both")
    Signed-off-by: Jeffrey Altman <jaltman@xxxxxxxxxxxx>
    Acked-by: David Howells <dhowells@xxxxxxxxxx>
    Signed-off-by: Marc Dionne <marc.dionne@xxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240419163057.4141728-1-marc.dionne@xxxxxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/rxrpc/conn_object.c b/net/rxrpc/conn_object.c
index df8a271948a1c..7aa58129ae455 100644
--- a/net/rxrpc/conn_object.c
+++ b/net/rxrpc/conn_object.c
@@ -118,18 +118,13 @@ struct rxrpc_connection *rxrpc_find_client_connection_rcu(struct rxrpc_local *lo
 	switch (srx->transport.family) {
 	case AF_INET:
 		if (peer->srx.transport.sin.sin_port !=
-		    srx->transport.sin.sin_port ||
-		    peer->srx.transport.sin.sin_addr.s_addr !=
-		    srx->transport.sin.sin_addr.s_addr)
+		    srx->transport.sin.sin_port)
 			goto not_found;
 		break;
 #ifdef CONFIG_AF_RXRPC_IPV6
 	case AF_INET6:
 		if (peer->srx.transport.sin6.sin6_port !=
-		    srx->transport.sin6.sin6_port ||
-		    memcmp(&peer->srx.transport.sin6.sin6_addr,
-			   &srx->transport.sin6.sin6_addr,
-			   sizeof(struct in6_addr)) != 0)
+		    srx->transport.sin6.sin6_port)
 			goto not_found;
 		break;
 #endif




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux