Re: [syzbot] [net?] [afs?] kernel BUG in rxrpc_purge_client_connections

From: Edward Adam Davis

Date: Sun Sep 27 2026 - 22:26:14 EST


From: Edward Aadm Davis <eadavis@xxxxxxxx>

#syz test: upstream f0100363d8c3

diff --git a/net/rxrpc/conn_event.c b/net/rxrpc/conn_event.c
index 611c790bc6d0..f9af07d7db4a 100644
--- a/net/rxrpc/conn_event.c
+++ b/net/rxrpc/conn_event.c
@@ -272,14 +272,15 @@ static int rxrpc_process_event(struct rxrpc_connection *conn,
bool secured = false;
int ret;

- if (conn->state == RXRPC_CONN_ABORTED)
- return -ECONNABORTED;

_enter("{%d},{%u,%%%u},", conn->debug_id, sp->hdr.type, sp->hdr.serial);

switch (sp->hdr.type) {
case RXRPC_PACKET_TYPE_CHALLENGE:
- ret = conn->security->respond_to_challenge(conn, skb);
+ if (conn->state != RXRPC_CONN_ABORTED)
+ ret = conn->security->respond_to_challenge(conn, skb);
+ else
+ ret = -ECONNABORTED;
sp->chall.conn = NULL;
rxrpc_put_connection(conn, rxrpc_conn_put_challenge_input);
return ret;
@@ -323,6 +324,8 @@ static int rxrpc_process_event(struct rxrpc_connection *conn,
return 0;

default:
+ if (conn->state == RXRPC_CONN_ABORTED)
+ return -ECONNABORTED;
WARN_ON_ONCE(1);
return -EPROTO;
}