]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
rxrpc: Fix oops due to non-existence of prealloc backlog struct
authorDavid Howells <dhowells@redhat.com>
Tue, 8 Jul 2025 21:15:04 +0000 (22:15 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Jul 2025 16:30:48 +0000 (18:30 +0200)
commit 880a88f318cf1d2a0f4c0a7ff7b07e2062b434a4 upstream.

If an AF_RXRPC service socket is opened and bound, but calls are
preallocated, then rxrpc_alloc_incoming_call() will oops because the
rxrpc_backlog struct doesn't get allocated until the first preallocation is
made.

Fix this by returning NULL from rxrpc_alloc_incoming_call() if there is no
backlog struct.  This will cause the incoming call to be aborted.

Reported-by: Junvyyang, Tencent Zhuque Lab <zhuque@tencent.com>
Suggested-by: Junvyyang, Tencent Zhuque Lab <zhuque@tencent.com>
Signed-off-by: David Howells <dhowells@redhat.com>
cc: LePremierHomme <kwqcheii@proton.me>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: Willy Tarreau <w@1wt.eu>
cc: Simon Horman <horms@kernel.org>
cc: linux-afs@lists.infradead.org
Link: https://patch.msgid.link/20250708211506.2699012-3-dhowells@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/rxrpc/call_accept.c

index 99e10eea3732177d101ba7e35b90e8be03f57129..658b592e58e05858f9ced3033f87557f564c3bf8 100644 (file)
@@ -270,6 +270,9 @@ static struct rxrpc_call *rxrpc_alloc_incoming_call(struct rxrpc_sock *rx,
        unsigned short call_tail, conn_tail, peer_tail;
        unsigned short call_count, conn_count;
 
+       if (!b)
+               return NULL;
+
        /* #calls >= #conns >= #peers must hold true. */
        call_head = smp_load_acquire(&b->call_backlog_head);
        call_tail = b->call_backlog_tail;