{"id":14867,"date":"2026-09-04T19:02:15","date_gmt":"2026-09-04T11:02:15","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-53399"},"modified":"2026-09-04T19:02:15","modified_gmt":"2026-09-04T11:02:15","slug":"cve-2026-53399","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-53399","title":{"rendered":"CVE-2026-53399 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: release layout"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: release layout stid on setlease failure<\/p>\n<p>nfs4_alloc_stid() publishes the new stid into cl-&gt;cl_stateids via<br \/>\nidr_alloc_cyclic() under cl_lock before returning to<br \/>\nnfsd4_alloc_layout_stateid(). When nfsd4_layout_setlease() then<br \/>\nfails, the error path frees the layout stateid directly with<br \/>\nkmem_cache_free() without ever calling idr_remove(), leaving the<br \/>\nIDR slot pointing at freed slab memory. Any subsequent IDR walker<br \/>\n(states_show, client teardown) dereferences the dangling pointer.<\/p>\n<p>The correct teardown for an IDR-published stid is nfs4_put_stid(),<br \/>\nwhich removes the IDR slot under cl_lock, dispatches sc_free<br \/>\n(nfsd4_free_layout_stateid) to release ls-&gt;ls_file via<br \/>\nnfsd4_close_layout(), and drops the nfs4_file reference in its<br \/>\ntail.<\/p>\n<p>A second issue blocks that switch: nfsd4_free_layout_stateid()<br \/>\nunconditionally inspects ls-&gt;ls_fence_work via<br \/>\ndelayed_work_pending() under ls_lock, but<br \/>\nINIT_DELAYED_WORK(&amp;ls-&gt;ls_fence_work, &#8230;) currently runs only<br \/>\nafter the setlease call. On the setlease-failure path the<br \/>\ndestructor would touch an uninitialized delayed_work.<\/p>\n<p>    nfsd4_alloc_layout_stateid()<br \/>\n      nfs4_alloc_stid()           \/* idr_alloc_cyclic under cl_lock *\/<br \/>\n      nfsd4_layout_setlease()     \/* fails *\/<br \/>\n        nfs4_put_stid()<br \/>\n          nfsd4_free_layout_stateid()<br \/>\n            delayed_work_pending(&amp;ls-&gt;ls_fence_work)  \/* needs INIT *\/<br \/>\n            nfsd4_close_layout()  \/* nfsd_file_put(ls-&gt;ls_file) *\/<br \/>\n          put_nfs4_file()<\/p>\n<p>Fix by hoisting the ls_fenced \/ ls_fence_delay \/ INIT_DELAYED_WORK<br \/>\ninitialization above the nfsd4_layout_setlease() call, and replace<br \/>\nthe manual nfsd_file_put + put_nfs4_file + kmem_cache_free cleanup<br \/>\nwith a single nfs4_put_stid(stp).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: release layout stid on setlease failure<\/p>\n<p>nfs4_alloc_stid() publishes the new stid into cl-&gt;cl_stateids via<br \/>\nidr_alloc_cyclic()<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-14867","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/14867","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=14867"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14867"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14867"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}