HIGH Introduced in 3.19
sunrpc SvcRqst UAF
CVE-2026-89545
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.0HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: sunrpc: defer rq_argp and rq_resp free until after RCU grace period svc_rqst_free() frees rqstp->rq_argp and rqstp->rq_resp synchronously via kfree(), but defers the rqstp struct free via kfree_rcu(). After svc_exit_thread() calls list_del_rcu() and svc_rqst_free(), there is a window where RCU readers that started before list_del_rcu() can still traverse the thread list and find the rqstp. These readers (e.g. nfsd_nl_rpc_status_get_dumpit()) dereference rqstp->rq_argp, which has already been freed — a use-after-free. Fix this by moving the kfree of rq_argp and rq_resp into an explicit call_rcu() callback alongside the struct free. Resources not accessed by RCU readers (bvec, buffer pages, scratch folio, auth_data) remain synchronously freed.
02KernelScan AI Analysis
Risk summary
A local attacker with CAP_NET_ADMIN can trigger a use-after-free in the sunrpc server layer by racing an nfsd netlink RPC-status dump against NFS server thread teardown. The freed request buffers could be reclaimed and manipulated to achieve kernel memory corruption, potentially escalating to full kernel read-write access or causing a denial of service. Only systems running an NFS server (nfsd) with active threads are affected.
Vulnerability analysis
When an NFS server thread exits, the cleanup path frees the request argument and response buffers immediately while deferring the thread structure free until after an RCU grace period. RCU readers that started before the thread was removed from the list can still find the thread structure and dereference the already-freed buffers, causing a use-after-free. The fix moves the buffer frees into the same RCU callback that releases the thread structure, so all three are freed together after the grace period completes. The vulnerable path is reached locally through the nfsd netlink RPC-status interface, which requires CAP_NET_ADMIN, and the race window opens when an NFS server thread exits while a status dump is in progress.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.12 | 3.19 | 6.12.111 | 0ea49d69aa80 |
| 6.18 | 3.19 | 6.18.50 | 08bc49e05412 |
| 7.2 | 3.19 | 7.2.4 | e0c5693d3f9a |
| mainline | 3.19 | 7.3 | c479bde671cb |
| cip/6.12 | 3.19 | 6.12.111-cip32 | 0ea49d69aa80 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.111-cip32 |
| cip/6.1 | Affected — no CIP fix yet (latest 6.1.189-cip61) |
| cip/6.1-rt | Affected — no CIP fix yet (latest 6.1.189-cip61-rt32) |
| cip/5.10 | Affected — no CIP fix yet (latest 5.10.271-cip78) |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.268-cip77-rt34) |
| cip/4.19 | Affected — no CIP fix yet (latest 4.19.325-cip136) |
| cip/4.19-rt | Affected — no CIP fix yet (latest 4.19.325-cip136-rt50) |
| cip/4.4 | Affected — no CIP fix yet (latest 4.4.302-cip115) |
| cip/4.4-rt | Affected — no CIP fix yet (latest 4.4.302-cip115-rt63) |