<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Sun, 04 Oct 2026 16:12:40 +0000</lastBuildDate>
    <item>
      <title>CVE-2025-38066 — dm cache: prevent BUG_ON by blocking retries on failed device resumes</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2025-38066</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;dm cache: prevent BUG_ON by blocking retries on failed device resumes&lt;/p&gt;
&lt;p&gt;A cache device failing to resume due to mapping errors should not be
retried, as the failure leaves a partially initialized policy object.
Repeating the resume operation risks triggering BUG_ON when reloading
cache mappings into the incomplete policy object.&lt;/p&gt;
&lt;p&gt;Reproduce steps:&lt;/p&gt;
&lt;p&gt;1. create a cache metadata consisting of 512 or more cache blocks,
   with some mappings stored in the first array block of the mapping
   array. Here we use cache_restore v1.0 to build the metadata.&lt;/p&gt;
&lt;p&gt;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; cmeta.xml
&amp;lt;superblock uuid=&amp;#34;&amp;#34; block_size=&amp;#34;128&amp;#34; nr_cache_blocks=&amp;#34;512&amp;#34; \
policy=&amp;#34;smq&amp;#34; hint_width=&amp;#34;4&amp;#34;&amp;gt;
  &amp;lt;mappings&amp;gt;
    &amp;lt;mapping cache_block=&amp;#34;0&amp;#34; origin_block=&amp;#34;0&amp;#34; dirty=&amp;#34;false&amp;#34;/&amp;gt;
  &amp;lt;/mappings&amp;gt;
&amp;lt;/superblock&amp;gt;
EOF
dmsetup create cmeta --table &amp;#34;0 8192 linear /dev/sdc 0&amp;#34;
cache_restore -i cmeta.xml -o /dev/mapper/cmeta --metadata-version=2
dmsetup remove cmeta&lt;/p&gt;
&lt;p&gt;2. wipe the second array block of the mapping array to simulate
   data degradations.&lt;/p&gt;
&lt;p&gt;mapping_root=$(dd if=/dev/sdc bs=1c count=8 skip=192 \
2&amp;gt;/dev/null | hexdump -e &amp;#39;1/8 &amp;#34;%u\n&amp;#34;&amp;#39;)
ablock=$(dd if=/dev/sdc bs=1c count=8 skip=$((4096*mapping_root+2056)) \
2&amp;gt;/dev/null | hexdump -e &amp;#39;1/8 &amp;#34;%u\n&amp;#34;&amp;#39;)
dd if=/dev/zero of=/dev/sdc bs=4k count=1 seek=$ablock&lt;/p&gt;
&lt;p&gt;3. try bringing up the cache device. The resume is expected to fail
   due to the broken array block.&lt;/p&gt;
&lt;p&gt;dmsetup create cmeta --table &amp;#34;0 8192 linear /dev/sdc 0&amp;#34;
dmset…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;dm cache: prevent BUG_ON by blocking retries on failed device resumes&lt;/p&gt;
&lt;p&gt;A cache device failing to resume due to mapping errors should not be
retried, as the failure leaves a partially initialized policy object.
Repeating the resume operation risks triggering BUG_ON when reloading
cache mappings into the incomplete policy object.&lt;/p&gt;
&lt;p&gt;Reproduce steps:&lt;/p&gt;
&lt;p&gt;1. create a cache metadata consisting of 512 or more cache blocks,
   with some mappings stored in the first array block of the mapping
   array. Here we use cache_restore v1.0 to build the metadata.&lt;/p&gt;
&lt;p&gt;cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; cmeta.xml
&amp;lt;superblock uuid=&amp;#34;&amp;#34; block_size=&amp;#34;128&amp;#34; nr_cache_blocks=&amp;#34;512&amp;#34; \
policy=&amp;#34;smq&amp;#34; hint_width=&amp;#34;4&amp;#34;&amp;gt;
  &amp;lt;mappings&amp;gt;
    &amp;lt;mapping cache_block=&amp;#34;0&amp;#34; origin_block=&amp;#34;0&amp;#34; dirty=&amp;#34;false&amp;#34;/&amp;gt;
  &amp;lt;/mappings&amp;gt;
&amp;lt;/superblock&amp;gt;
EOF
dmsetup create cmeta --table &amp;#34;0 8192 linear /dev/sdc 0&amp;#34;
cache_restore -i cmeta.xml -o /dev/mapper/cmeta --metadata-version=2
dmsetup remove cmeta&lt;/p&gt;
&lt;p&gt;2. wipe the second array block of the mapping array to simulate
   data degradations.&lt;/p&gt;
&lt;p&gt;mapping_root=$(dd if=/dev/sdc bs=1c count=8 skip=192 \
2&amp;gt;/dev/null | hexdump -e &amp;#39;1/8 &amp;#34;%u\n&amp;#34;&amp;#39;)
ablock=$(dd if=/dev/sdc bs=1c count=8 skip=$((4096*mapping_root+2056)) \
2&amp;gt;/dev/null | hexdump -e &amp;#39;1/8 &amp;#34;%u\n&amp;#34;&amp;#39;)
dd if=/dev/zero of=/dev/sdc bs=4k count=1 seek=$ablock&lt;/p&gt;
&lt;p&gt;3. try bringing up the cache device. The resume is expected to fail
   due to the broken array block.&lt;/p&gt;
&lt;p&gt;dmsetup create cmeta --table &amp;#34;0 8192 linear /dev/sdc 0&amp;#34;
dmset…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2025-38066</guid>
    </item>
  </channel>
</rss>
