GPU VulnDB

Database/Control plane, storage & DevOps

Linux nfsd: use-after-free on cl_cb_session when a session is destroyed with a callback in flight

CVSS 9.8CVE-2026-89708Control plane, storage & DevOpscurated

Impact

After DESTROY_SESSION the teardown path can kfree a session while an rpc_task on rpciod still dereferences clp->cl_cb_session. Flushing cl_callback_wq does not wait for a task already handed to rpc_call_async(), and rpc_shutdown_client() only drains with a one-second timeout, which a task sitting in a two-second NFS4ERR_DELAY rpc_delay() outlives. A second window exists in nfsd4_process_cb_update(), where cl_cb_session retains a pointer to the about-to-be-freed session because the v4.1 early return skips the assignment. Either way rpciod reads freed slab memory on the NFS server, giving a client that controls its callback timing a path to corrupt or crash shared storage for every node that mounts the export.

Who can reach it

An NFSv4.1 client that can establish a backchannel, stall callbacks with NFS4ERR_DELAY, and then send DESTROY_SESSION. Ordinary client authentication to the export.

What to do

Patch the NFS server kernel with one of the linked stable commits and reboot; the fix makes cl_cb_session an __rcu pointer, publishes it only after rpc_create() succeeds, and frees sessions with kfree_rcu(). nfsd is in-kernel, so a service restart does not apply the fix and there is no configuration mitigation.

References

Related entries

All Control plane, storage & DevOps entries

This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.