{"id":21500,"date":"2026-09-12T04:31:16","date_gmt":"2026-09-11T20:31:16","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89578"},"modified":"2026-09-12T04:31:16","modified_gmt":"2026-09-11T20:31:16","slug":"cve-2026-89578","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89578","title":{"rendered":"CVE-2026-89578 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ndm-io: clone the sour"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>dm-io: clone the source bio instead of copying its biovec<\/p>\n<p>For DM_IO_BIO requests, do_region() built each destination bio by walking<br \/>\nthe source bio&#8217;s biovec and re-adding the pages one at a time, tracking<br \/>\nthe remaining transfer in sectors. The vector lengths are byte granular<br \/>\nand need not be sector aligned (e.g. a misaligned O_DIRECT buffer split<br \/>\nacross pages), so the sector-based accounting could lose a sub-sector<br \/>\nfragment: to_sector() truncated the remainder and the outer loop spun<br \/>\nforever submitting empty bios, hanging the I\/O.<\/p>\n<p>There is no need to rebuild the biovec at all. The destination reads into<br \/>\n(or writes from) exactly the same pages as the source bio, so the bio can<br \/>\nsimply clone the source&#8217;s biovec with bio_alloc_clone() and remap it to<br \/>\nthe target device. The clone inherits the source&#8217;s iterator and alignment,<br \/>\nand the block layer splits it to the target&#8217;s limits on submission, so the<br \/>\nwhole region maps to a single cloned bio with no manual page copying or<br \/>\nsector accounting.<\/p>\n<p>This removes the per-page copy path (and its open-coded bvec dpages<br \/>\nhelpers) for bio-backed I\/O and fixes the hang on misaligned direct I\/O to<br \/>\na dm-mirror device. Page-list, vma and kmem sources keep the existing copy<br \/>\npath.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>dm-io: clone the source bio instead of copying its biovec<\/p>\n<p>For DM_IO_BIO requests, do_region() built each destination bio by walkin<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21500","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21500","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=21500"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21500"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}