{"id":21584,"date":"2026-09-12T04:31:23","date_gmt":"2026-09-11T20:31:23","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89662"},"modified":"2026-09-12T04:31:23","modified_gmt":"2026-09-11T20:31:23","slug":"cve-2026-89662","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89662","title":{"rendered":"CVE-2026-89662 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nNFSD: Prevent lock ow"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>NFSD: Prevent lock owner use-after-free during client teardown<\/p>\n<p>__destroy_client() releases a client&#8217;s open owners, but a lock owner<br \/>\nwhose only reference is a blocked lock (nbl) stays on<br \/>\ncl_ownerstr_hashtbl.  client_has_state() does not count a bare owner,<br \/>\nso DESTROY_CLIENTID can reach __destroy_client() with such owners<br \/>\npresent.<\/p>\n<p>__destroy_client() then walks the table, calling remove_blocked_locks()<br \/>\non each owner without a reference.  Freeing a blocked lock drops the<br \/>\nowner reference held via flc_owner.  The per-net laundromat reaps<br \/>\nblocked locks from nn-&gt;blocked_locks_lru independently of client state.<br \/>\nThe two paths share blocked_locks_lock only for the list splice, not<br \/>\nthe owner&#8217;s lifetime.  The laundromat therefore frees the owner as<br \/>\n__destroy_client() dereferences it, a NULL dereference in<br \/>\nremove_blocked_locks().<\/p>\n<p>nfsd4_release_lockowner() holds a reference across the same call;<br \/>\n__destroy_client() does not.  Hold cl_lock across the walk, taking a<br \/>\nreference and unhashing each owner, then drop it before<br \/>\nremove_blocked_locks() and nfs4_put_stateowner(), which take<br \/>\nblocked_locks_lock and cl_lock.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>NFSD: Prevent lock owner use-after-free during client teardown<\/p>\n<p>__destroy_client() releases a client&#8217;s open owners, but a lock owne<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21584","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21584","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=21584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}