{"id":21600,"date":"2026-09-12T04:31:24","date_gmt":"2026-09-11T20:31:24","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89678"},"modified":"2026-09-12T04:31:24","modified_gmt":"2026-09-11T20:31:24","slug":"cve-2026-89678","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89678","title":{"rendered":"CVE-2026-89678 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnfsd: fix partial-wri"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: fix partial-write detection in nfsd_direct_write<\/p>\n<p>nfsd_direct_write() walks a list of write segments and, after each<br \/>\nvfs_iocb_iter_write(), tries to detect a short write so the loop can<br \/>\nstop before placing the next segment at a wrong file offset:<\/p>\n<p>    host_err = vfs_iocb_iter_write(file, kiocb, &amp;segments[i].iter);<br \/>\n    if (host_err &lt; 0)<br \/>\n            return host_err;<br \/>\n    *cnt += host_err;<br \/>\n    if (host_err write_iter(), which<br \/>\nadvances the iter by the number of bytes written. By the time the<br \/>\ncheck runs, segments[i].iter.count is the residual, not the original<br \/>\nrequest length:<\/p>\n<p>    before write_iter: iter.count == original_len<br \/>\n    after  write_iter: iter.count == original_len &#8211; host_err<\/p>\n<p>The condition then reduces to host_err ki_pos<br \/>\nonly bumped by the short amount, writing the next segment&#8217;s payload<br \/>\nat the wrong offset and over-reporting *cnt to the NFS client.<\/p>\n<p>Snapshot the segment&#8217;s byte count before the write and compare<br \/>\nhost_err against that snapshot so any short write breaks the loop.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>nfsd: fix partial-write detection in nfsd_direct_write<\/p>\n<p>nfsd_direct_write() walks a list of write segments and, after each<br \/>\nvfs_iocb<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21600","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21600","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=21600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}