{"id":6776,"date":"2026-09-04T18:49:16","date_gmt":"2026-09-04T10:49:16","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72108"},"modified":"2026-09-04T18:49:16","modified_gmt":"2026-09-04T10:49:16","slug":"cve-2026-72108","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72108","title":{"rendered":"CVE-2026-72108 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ndm thin metadata: fix"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>dm thin metadata: fix metadata snapshot consistency on commit failure<\/p>\n<p>__reserve_metadata_snap() and __release_metadata_snap() modify the<br \/>\nsuperblock&#8217;s held_root directly in the block_manager&#8217;s buffer. If the<br \/>\nsubsequent metadata commit fails, the held_root gets flushed to disk<br \/>\nthrough the abort_transaction path, resulting in inconsistent metadata.<\/p>\n<p>Reproducer 1: __reserve_metadata_snap()<\/p>\n<p>1. Create a 2 MiB metadata device and make the region after the 14th<br \/>\n   block inaccessible, to trigger metadata commit failure in the<br \/>\n   subsequent reserve_metadata_snap operation. The 14th block will be<br \/>\n   the shadow destination for the index block.<\/p>\n<p>dmsetup create tmeta &#8211;table &#8220;0 112 linear \/dev\/sdc 0<br \/>\n112 3984 error&#8221;<\/p>\n<p>2. Create a 16 MiB thin-pool<\/p>\n<p>dmsetup create tdata &#8211;table &#8220;0 32768 zero&#8221;<br \/>\ndd if=\/dev\/zero of=\/dev\/mapper\/tmeta bs=4k count=1<br \/>\ndmsetup create tpool &#8211;table &#8220;0 32768 thin-pool \/dev\/mapper\/tmeta<br \/>\n\/dev\/mapper\/tdata 128 0 1 skip_block_zeroing&#8221;<\/p>\n<p>3. Take a metadata snapshot to trigger metadata commit failure and<br \/>\n   transaction abort. However, the held_root is written to disk,<br \/>\n   breaking metadata consistency.<\/p>\n<p>dmsetup message tpool 0 &#8220;reserve_metadata_snap&#8221;<\/p>\n<p>thin_check v1.2.2 result:<\/p>\n<p>Bad reference count for metadata block 6.  Expected 2, but space map contains 1.<br \/>\nBad reference count for metadata block 7.  Expected 2, but space map contains 1.<br \/>\nBad reference count for metadata block 13.  Expected 1, but space map contains 0.<\/p>\n<p>Reproducer 2: __release_metadata_snap()<\/p>\n<p>1. Create a 2 MiB metadata device and make the region after the 16th<br \/>\n   block inaccessible, to trigger metadata commit failure in the<br \/>\n   subsequent release_metadata_snap operation. The 16th block will be<br \/>\n   the shadow destination for the index block.<\/p>\n<p>dmsetup create tmeta &#8211;table &#8220;0 128 linear \/dev\/sdc 0<br \/>\n128 3968 error&#8221;<\/p>\n<p>2. Create a 16 MiB thin-pool<\/p>\n<p>dmsetup create tdata &#8211;table &#8220;0 32768 zero&#8221;<br \/>\ndd if=\/dev\/zero of=\/dev\/mapper\/tmeta bs=4k count=1<br \/>\ndmsetup create tpool &#8211;table &#8220;0 32768 thin-pool \/dev\/mapper\/tmeta<br \/>\n\/dev\/mapper\/tdata 128 0 1 skip_block_zeroing&#8221;<\/p>\n<p>3. Reserve then release the metadata snapshot, to trigger metadata<br \/>\n   commit failure and transaction abort. The held_root gets removed<br \/>\n   from the on-disk superblock, causing inconsistent metadata.<\/p>\n<p>dmsetup message tpool 0 &#8220;reserve_metadata_snap&#8221;<br \/>\ndmsetup message tpool 0 &#8220;release_metadata_snap&#8221;<\/p>\n<p>thin_check v1.2.2 result:<\/p>\n<p>Bad reference count for metadata block 6.  Expected 1, but space map contains 2.<br \/>\nBad reference count for metadata block 7.  Expected 1, but space map contains 2.<br \/>\n1 metadata blocks have leaked.<\/p>\n<p>Fix by deferring the held_root update to commit time.<\/p>\n<p>Additionally, move the existing-snapshot check in __reserve_metadata_snap<br \/>\nbefore the shadow operation to avoid unnecessary work. In<br \/>\n__release_metadata_snap, clear pmd-&gt;held_root before btree deletion so<br \/>\npartial failure leaks blocks rather than leaving a stale reference, and<br \/>\nunlock the snapshot block before decrementing its refcount.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>dm thin metadata: fix metadata snapshot consistency on commit failure<\/p>\n<p>__reserve_metadata_snap() and __release_metadata_snap() modi<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-6776","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/6776","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=6776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}