{"id":21610,"date":"2026-09-12T04:31:25","date_gmt":"2026-09-11T20:31:25","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89688"},"modified":"2026-09-12T04:31:25","modified_gmt":"2026-09-11T20:31:25","slug":"cve-2026-89688","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89688","title":{"rendered":"CVE-2026-89688 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: drop the statei"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: drop the stateid, not the stateowner, on seqid_op replay retry<\/p>\n<p>In nfs4_preprocess_seqid_op() the stateid is obtained from<br \/>\nnfsd4_lookup_stateid(), which holds a reference on the nfs4_stid<br \/>\n(sc_count) but takes no reference on the stateowner. openlockstateid()<br \/>\nmerely casts that stid and likewise takes no reference.<\/p>\n<p>When nfsd4_cstate_assign_replay() returns -EAGAIN (the replay owner is<br \/>\nbeing torn down, RP_UNHASHED) it has not taken a stateowner reference on<br \/>\nthat path. The error handling nevertheless called<br \/>\nnfs4_put_stateowner(stp-&gt;st_stateowner), dropping an so_count reference<br \/>\nthe function never acquired &#8212; risking a stateowner refcount underflow and<br \/>\nuse-after-free &#8212; while leaking the sc_count reference held on the stid.<br \/>\nThe leaked stid reference can also stall a concurrent<br \/>\nnfsd4_close_open_stateid() waiting for sc_count to drop.<\/p>\n<p>Drop the reference actually held &#8212; the stid &#8212; before retrying. The<br \/>\nstateowner stays alive through the reference held by the stid. This mirrors<br \/>\nthe open path in nfsd4_process_open1(), where the put balances a reference<br \/>\nthat path explicitly holds on the stateowner.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: drop the stateid, not the stateowner, on seqid_op replay retry<\/p>\n<p>In nfs4_preprocess_seqid_op() the stateid is obtained from<br \/>\nnf<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21610","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21610","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=21610"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21610"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}