GPU VulnDB

Database/Control plane, storage & DevOps

Linux nfsd: copy-notify stateid freed while still discoverable, a use-after-free on all three revoke paths

UnscoredCVE-2026-89663Control plane, storage & DevOpscurated

Impact

Copy-notify stateids are pinned by a single membership reference in the s2s_cp_stateids IDR and on the parent stid's sc_cp_list. _free_cpntf_state_locked() only unlinks an entry once its refcount hits zero, so any revoke that runs while a concurrent find_cpntf_state()/manage_cpntf_state() holder has raised cs_count drops the reference without unlinking - leaving the entry discoverable with its membership reference already spent. A second revoke or a laundromat tick then frees it under the reader, a KASAN-detectable use-after-free at nfs4_put_cpntf_state(). All three revoke paths were affected: the parent-stid drain, OFFLOAD_CANCEL, and laundromat expiry. The reachable trigger is NFSv4.2 server-to-server copy traffic, so fleets that do not use inter-server COPY are less exposed; where it is used, the outcome is a crash of a shared NFS server.

Who can reach it

NFSv4.2 clients performing server-to-server COPY against the server, racing OFFLOAD_CANCEL or laundromat expiry. Authenticated NFS client access is needed; no local privilege on the server is described.

What to do

Update the NFS server host to a stable kernel carrying the fix (four backport commits linked on the record); it adds revoke_cpntf_state_locked(), which unhashes from the IDR and sc_cp_list before dropping the reference, and uses it on all three revoke paths. nfsd is in-kernel, so remediation is a reboot of the server node, best batched with the other nfsd fixes from the same day.

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.