<?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 20:54:24 +0000</lastBuildDate>
    <item>
      <title>CVE-2024-57929 — dm array: fix releasing a faulty array block twice in dm_array_cursor_end</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2024-57929</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux, Siemens SIMATIC S7-1500 TM MFP - GNU/Linux subsystem&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;dm array: fix releasing a faulty array block twice in dm_array_cursor_end&lt;/p&gt;
&lt;p&gt;When dm_bm_read_lock() fails due to locking or checksum errors, it
releases the faulty block implicitly while leaving an invalid output
pointer behind. The caller of dm_bm_read_lock() should not operate on
this invalid dm_block pointer, or it will lead to undefined result.
For example, the dm_array_cursor incorrectly caches the invalid pointer
on reading a faulty array block, causing a double release in
dm_array_cursor_end(), then hitting the BUG_ON in dm-bufio cache_put().&lt;/p&gt;
&lt;p&gt;Reproduce steps:&lt;/p&gt;
&lt;p&gt;1. initialize a cache device&lt;/p&gt;
&lt;p&gt;dmsetup create cmeta --table &amp;#34;0 8192 linear /dev/sdc 0&amp;#34;
dmsetup create cdata --table &amp;#34;0 65536 linear /dev/sdc 8192&amp;#34;
dmsetup create corig --table &amp;#34;0 524288 linear /dev/sdc $262144&amp;#34;
dd if=/dev/zero of=/dev/mapper/cmeta bs=4k count=1
dmsetup create cache --table &amp;#34;0 524288 cache /dev/mapper/cmeta \
/dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0&amp;#34;&lt;/p&gt;
&lt;p&gt;2. wipe the second array block offline&lt;/p&gt;
&lt;p&gt;dmsteup remove cache cmeta cdata corig
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 reopen the cache device&lt;/p&gt;
&lt;p&gt;dmsetup create cmeta --table &amp;#34;0 8192 linear /dev/sdc 0&amp;#34;
dmsetup create cdata --table…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux, Siemens SIMATIC S7-1500 TM MFP - GNU/Linux subsystem&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;dm array: fix releasing a faulty array block twice in dm_array_cursor_end&lt;/p&gt;
&lt;p&gt;When dm_bm_read_lock() fails due to locking or checksum errors, it
releases the faulty block implicitly while leaving an invalid output
pointer behind. The caller of dm_bm_read_lock() should not operate on
this invalid dm_block pointer, or it will lead to undefined result.
For example, the dm_array_cursor incorrectly caches the invalid pointer
on reading a faulty array block, causing a double release in
dm_array_cursor_end(), then hitting the BUG_ON in dm-bufio cache_put().&lt;/p&gt;
&lt;p&gt;Reproduce steps:&lt;/p&gt;
&lt;p&gt;1. initialize a cache device&lt;/p&gt;
&lt;p&gt;dmsetup create cmeta --table &amp;#34;0 8192 linear /dev/sdc 0&amp;#34;
dmsetup create cdata --table &amp;#34;0 65536 linear /dev/sdc 8192&amp;#34;
dmsetup create corig --table &amp;#34;0 524288 linear /dev/sdc $262144&amp;#34;
dd if=/dev/zero of=/dev/mapper/cmeta bs=4k count=1
dmsetup create cache --table &amp;#34;0 524288 cache /dev/mapper/cmeta \
/dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0&amp;#34;&lt;/p&gt;
&lt;p&gt;2. wipe the second array block offline&lt;/p&gt;
&lt;p&gt;dmsteup remove cache cmeta cdata corig
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 reopen the cache device&lt;/p&gt;
&lt;p&gt;dmsetup create cmeta --table &amp;#34;0 8192 linear /dev/sdc 0&amp;#34;
dmsetup create cdata --table…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2024-57929</guid>
    </item>
  </channel>
</rss>
