{"id":21581,"date":"2026-09-12T04:31:22","date_gmt":"2026-09-11T20:31:22","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89659"},"modified":"2026-09-12T04:31:22","modified_gmt":"2026-09-11T20:31:22","slug":"cve-2026-89659","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89659","title":{"rendered":"CVE-2026-89659 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nNFSD: Prevent client"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>NFSD: Prevent client use-after-free during delegation revoke<\/p>\n<p>A delegation stateid holds only a bare pointer to its owning<br \/>\nnfs4_client and does not keep it alive.  The client survives its<br \/>\nstateids only because __destroy_client() drains cl_delegations and<br \/>\ncl_revoked before free_client() runs.<\/p>\n<p>nfs4_laundromat() breaks that invariant: it unhashes an<br \/>\nexpired delegation from cl_delegations, drops deleg_lock, then<br \/>\nrevoke_delegation() relinks it onto cl_revoked under cl_lock.  In that<br \/>\nwindow the delegation is on neither list, so client_has_state() can<br \/>\nreport no remaining state.<\/p>\n<p>Every teardown path first requires cl_rpc_users to be zero, but<br \/>\nthe laundromat holds no such reference.  A client whose recalled<br \/>\ndelegation has just timed out can therefore reach free_client()<br \/>\nwhile revoke_delegation() is still about to dereference cl_lock,<br \/>\na use-after-free.<\/p>\n<p>Pin the client with cl_rpc_users across the revoke so teardown blocks<br \/>\nuntil it completes, then reap the delegation from cl_revoked.  A client<br \/>\nalready expiring reaps its own, so skip it and leave the delegation on<br \/>\ndel_recall_lru.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>NFSD: Prevent client use-after-free during delegation revoke<\/p>\n<p>A delegation stateid holds only a bare pointer to its owning<br \/>\nnfs4_cli<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21581","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21581","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=21581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}