GPU VulnDB

Database/Control plane, storage & DevOps

Linux nfsd: use-after-free when a client is torn down while an expired delegation is being revoked

UnscoredCVE-2026-89659Control plane, storage & DevOpscurated

Impact

A delegation stateid holds only a bare pointer to its nfs4_client; the client survives because __destroy_client() drains cl_delegations and cl_revoked first. nfs4_laundromat() breaks that invariant - it unhashes an expired delegation, drops deleg_lock, and revoke_delegation() relinks it onto cl_revoked, leaving a window where the delegation is on neither list and client_has_state() reports no remaining state. The laundromat holds no cl_rpc_users reference, so a client whose recalled delegation just timed out can reach free_client() while revoke_delegation() is about to touch cl_lock. On a storage or head node exporting NFS to the fleet, this is a kernel-level crash of the server, which stalls every GPU node mounting it. The fix pins the client across the revoke.

Who can reach it

Local to the NFS server host: a timing race between the laundromat's delegation-recall timeout and client teardown. No tenant-controlled path is described, though normal client churn plus a recalled delegation is enough to open the window.

What to do

Update the NFS server host to a stable kernel carrying the fix (three backport commits linked on the record). Because nfsd is in-kernel, remediation is a reboot of the server node - plan for mounts to stall or fail over during it - not a service restart. Batch with the other nfsd client-lifetime 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.