GPU VulnDB

Database/Control plane, storage & DevOps

Linux nfsd: use-after-free on an nfs4_client freed while admin state revocation drops client_lock

UnscoredCVE-2026-89660Control plane, storage & DevOpscurated

Impact

nfsd4_revoke_states() drops nn->client_lock across revoke_one_stid(), which dereferences the client to revoke a stateid and read clp->cl_minorversion, while a stateid reference does not pin the client. A teardown racing the dropped lock frees the client first. Pinning cl_rpc_users blocks DESTROY_CLIENTID and EXCHANGE_ID teardown, but force_expire_client() ignores a pin taken after its own wait has passed, so the fix also skips any client whose cl_time is already zero. For an operator, the exposure is a kernel crash of the NFS server that the fleet mounts - one node's fault, every mounting GPU node's stall. The fix makes the walk either observe the expiry and skip, or pin in time for the expiry wait to cover the revoke.

Who can reach it

Local to the NFS server host: an administrative state revocation racing client expiry (including force_expire_client() via the nfsd control files). No remote or tenant path is described in the record.

What to do

Update the NFS server host to a stable kernel carrying the fix; three backport commits are linked on the record. nfsd is in-kernel, so the action is a reboot of the server node with mounts stalled or failed over - not a daemon restart. Batch with the other nfsd client-lifetime fixes published 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.