{"id":21611,"date":"2026-09-12T04:31:25","date_gmt":"2026-09-11T20:31:25","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89689"},"modified":"2026-09-12T04:31:25","modified_gmt":"2026-09-11T20:31:25","slug":"cve-2026-89689","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89689","title":{"rendered":"CVE-2026-89689 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: don&#8217;t free sess"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: don&#8217;t free session slots that are still in use<\/p>\n<p>nfsd4_sequence() can free the very slot it is currently processing.<br \/>\nWhen the session shrinker has reduced se_target_maxslots below<br \/>\nse_fchannel.maxreqs, the shrink path checks three conditions before<br \/>\ncalling free_session_slots():<\/p>\n<p>  1. se_target_maxslots sl_generation == se_slot_gen  (slot is up-to-date)<br \/>\n  3. seq-&gt;maxslots slotid is never checked against se_target_maxslots.<br \/>\nA client using a slot in the range [se_target_maxslots, maxreqs) can<br \/>\nsatisfy all three conditions: its slot has the current generation<br \/>\n(set by a prior SEQUENCE), and it sends sa_highest_slotid =<br \/>\nse_target_maxslots, including the caller&#8217;s own slot. The function<br \/>\ncontinues to write sl_seqid, sl_flags, sl_generation, and stores the<br \/>\ndangling pointer in cstate-&gt;slot. Later, nfsd4_store_cache_entry()<br \/>\ncopies up to maxresp_cached bytes of the compound reply into the freed<br \/>\nsl_data[] array, corrupting whatever slab object now occupies that<br \/>\naddress.<\/p>\n<p>Additionally, a concurrent thread processing SEQUENCE on a different<br \/>\nhigh-numbered slot can have its slot freed out from under it.<br \/>\nNFSD4_SLOT_INUSE is set under nn-&gt;client_lock before the lock is<br \/>\nreleased, so any concurrent thread past SEQUENCE will have its slot<br \/>\nmarked. However, free_session_slots() does not check NFSD4_SLOT_INUSE<br \/>\nbefore freeing.<\/p>\n<p>Fix both problems by:<br \/>\n 1. Checking that the current request&#8217;s slotid is below the shrink<br \/>\n    boundary.<br \/>\n 2. Scanning slots in the to-be-freed range for NFSD4_SLOT_INUSE and<br \/>\n    deferring the shrink if any are active.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: don&#8217;t free session slots that are still in use<\/p>\n<p>nfsd4_sequence() can free the very slot it is currently processing.<br \/>\nWhen the <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21611","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21611","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=21611"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21611"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}