rxrpc: Allow the app to store private data on peer structs
authorDavid Howells <dhowells@redhat.com>
Fri, 11 Apr 2025 09:52:55 +0000 (10:52 +0100)
committerJakub Kicinski <kuba@kernel.org>
Tue, 15 Apr 2025 00:36:42 +0000 (17:36 -0700)
Provide a way for the application (e.g. the afs filesystem) to store
private data on the rxrpc_peer structs for later retrieval via the call
object.

This will allow afs to store a pointer to the afs_server object on the
rxrpc_peer struct, thereby obviating the need for afs to keep lookup tables
by which it can associate an incoming call with server that transmitted it.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: Simon Horman <horms@kernel.org>
cc: linux-afs@lists.infradead.org
Link: https://patch.msgid.link/20250411095303.2316168-11-dhowells@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/rxrpc/oob.c

index 3601022..05ca9c1 100644 (file)
@@ -272,7 +272,7 @@ enum rxrpc_oob_type rxrpc_kernel_query_oob(struct sk_buff *oob,
        switch (type) {
        case RXRPC_OOB_CHALLENGE:
                *_peer          = sp->chall.conn->peer;
-               *_peer_appdata  = 0; /* TODO: retrieve appdata */
+               *_peer_appdata  = sp->chall.conn->peer->app_data;
                break;
        default:
                WARN_ON_ONCE(1);
@@ -347,7 +347,7 @@ void rxrpc_kernel_query_challenge(struct sk_buff *challenge,
        struct rxrpc_skb_priv *sp = rxrpc_skb(challenge);
 
        *_peer          = sp->chall.conn->peer;
-       *_peer_appdata  = 0; /* TODO: retrieve appdata */
+       *_peer_appdata  = sp->chall.conn->peer->app_data;
        *_service_id    = sp->hdr.serviceId;
        *_security_index = sp->hdr.securityIndex;
 }