KernelScan.io

HIGH

rxrpc Call Reference Deref

CVE-2026-31638

CVSS 7.5 / 10.0 NVD

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

KernelScan AI7.5HIGH

01

In the Linux kernel, the following vulnerability has been resolved: rxrpc: Only put the call ref if one was acquired rxrpc_input_packet_on_conn() can process a to-client packet after the current client call on the channel has already been torn down. In that case chan->call is NULL, rxrpc_try_get_call() returns NULL and there is no reference to drop. The client-side implicit-end error path does not account for that and unconditionally calls rxrpc_put_call(). This turns a protocol error path into a kernel crash instead of rejecting the packet. Only drop the call reference if one was actually acquired. Keep the existing protocol error handling unchanged.

02

Engine v0.2.0

Risk summary

An attacker can crash the kernel by sending malformed rxrpc packets that trigger null pointer dereference during packet processing. This affects systems using the rxrpc protocol (commonly used by AFS file systems) and can lead to denial of service.

Affectednet/rxrpc/io_thread.c

Vulnerability analysis

Summary: A null pointer dereference vulnerability in the rxrpc subsystem where rxrpc_put_call() is called unconditionally on a potentially NULL call pointer, leading to kernel crashes.

Root Cause: In rxrpc_input_packet_on_conn(), when processing to-client packets after a client call has been torn down, chan->call becomes NULL and rxrpc_try_get_call() returns NULL. However, the error path unconditionally calls rxrpc_put_call() without checking if a call reference was actually acquired.

Attack Surface: Network-accessible through rxrpc protocol packets. An attacker can send specially crafted to-client packets to trigger the condition where a call has been torn down but packet processing continues, leading to the null pointer dereference.

Fix Mechanism: The patch adds a null check before calling rxrpc_put_call(), ensuring the call reference is only dropped if one was actually acquired (i.e., if call is not NULL).

03

BranchFixed inPatch commit
6.126.12.820c156aff8a2d
6.186.18.238299ca146489
6.196.19.139fb09861e2b8
6.66.6.135b8f66447448d
mainline7.06331f1b24a3e