CVE-2026-89662

NFSD: Prevent lock owner use-after-free during client teardown

State
Published
Severity
9.8 Critical
Published
Sep 11, 2026
Updated
Oct 19, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

NFSD: Prevent lock owner use-after-free during client teardown

__destroy_client() releases a client's open owners, but a lock owner whose only reference is a blocked lock (nbl) stays on cl_ownerstr_hashtbl. client_has_state() does not count a bare owner, so DESTROY_CLIENTID can reach __destroy_client() with such owners present.

__destroy_client() then walks the table, calling remove_blocked_locks() on each owner without a reference. Freeing a blocked lock drops the owner reference held via flc_owner. The per-net laundromat reaps blocked locks from nn->blocked_locks_lru independently of client state. The two paths share blocked_locks_lock only for the list splice, not the owner's lifetime. The laundromat therefore frees the owner as __destroy_client() dereferences it, a NULL dereference in remove_blocked_locks().

nfsd4_release_lockowner() holds a reference across the same call; __destroy_client() does not. Hold cl_lock across the walk, taking a reference and unhashing each owner, then drop it before remove_blocked_locks() and nfs4_put_stateowner(), which take blocked_locks_lock and cl_lock.

Scores

CVSSScoreVectorSource
3.19.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 68ef3bc3166468678d5e1fdd216628c35bd1186f to before 42d7954b0a1907d4ef122aef94561952a033cdc3Affected
  • 68ef3bc3166468678d5e1fdd216628c35bd1186f to before bb38ff8b4dafbbd1781ad37cd96722fdf2cd972aAffected
  • 68ef3bc3166468678d5e1fdd216628c35bd1186f to before b8bad5a11416b26cc7fd4b18fba46d75ff636558Affected
  • 68ef3bc3166468678d5e1fdd216628c35bd1186f to before 1ce74d1b7770e69735e8f8e509807af4ff9c8ee7Affected
  • 68ef3bc3166468678d5e1fdd216628c35bd1186f to before a6ead6fff3a7d03e49845f048f7000a2e0d34431Affected
  • 68ef3bc3166468678d5e1fdd216628c35bd1186f to before 4804c58f73a80d12df1de323bf97a164f6ee8743Affected
  • 68ef3bc3166468678d5e1fdd216628c35bd1186f to before 8cf4ff0a7c083dd5e0067f517d63979b74b66649Affected
  • 68ef3bc3166468678d5e1fdd216628c35bd1186f to before 5e2fa29d223a9a1e6a948e40b109d09081d1decdAffected
  • e294c4c2d33b7307a89cdf31bec08a112d6a9297Affected
  • 797bfd05d4040fbf766198b3cfcc1838002cc890Affected
  • 0f44e9da465ea259b6c9f31a627f3c50a16e1679Affected
  • 4.9.91 to before 4.10Affected
  • 4.14.31 to before 4.15Affected
  • 4.15.14 to before 4.16Affected
LinuxLinux
  • 4.16Affected
  • before 4.16Not affected
  • 5.10.270 through 5.10.*Not affected
  • 5.15.221 through 5.15.*Not affected
  • 6.1.188 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.109 through 6.12.*Not affected
  • 6.18.50 through 6.18.*Not affected
  • 7.2.4 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.