<?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>Thu, 01 Oct 2026 12:37:20 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-64504 — iio: accel: bmc150: clamp the device-reported FIFO frame count</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-64504</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;iio: accel: bmc150: clamp the device-reported FIFO frame count&lt;/p&gt;
&lt;p&gt;__bmc150_accel_fifo_flush() copies the number of samples the device
reports in its hardware FIFO into an on-stack buffer&lt;/p&gt;
&lt;p&gt;u16 buffer[BMC150_ACCEL_FIFO_LENGTH * 3];&lt;/p&gt;
&lt;p&gt;which is sized for at most BMC150_ACCEL_FIFO_LENGTH (32) samples. The
frame count is read from the FIFO_STATUS register and only masked to its
7 valid bits:&lt;/p&gt;
&lt;p&gt;count = val &amp;amp; 0x7F;&lt;/p&gt;
&lt;p&gt;so it can be 0..127. The only other limit applied to it is the optional
caller-supplied sample budget:&lt;/p&gt;
&lt;p&gt;if (samples &amp;amp;&amp;amp; count &amp;gt; samples)
		count = samples;&lt;/p&gt;
&lt;p&gt;which does not constrain count on the flush-all path (samples == 0), and
leaves it well above 32 whenever samples is larger. count samples are
then transferred into buffer[]:&lt;/p&gt;
&lt;p&gt;bmc150_accel_fifo_transfer(data, (u8 *)buffer, count);&lt;/p&gt;
&lt;p&gt;bmc150_accel_fifo_transfer() reads count * 6 bytes through regmap, so a
malfunctioning, malicious or counterfeit accelerometer (or an attacker
tampering with the I2C/SPI bus) that reports up to 127 frames writes up
to 762 bytes into the 192-byte buffer: a stack out-of-bounds write of up
to 570 bytes that clobbers the stack canary, saved registers and the
return address.&lt;/p&gt;
&lt;p&gt;Clamp count to BMC150_ACCEL_FIFO_LENGTH, the number of samples buffer[]
is sized for, before the transfer, mirroring the watermark clamp already
done in bmc150_accel_set_watermark(). A well-formed flush reports at most
BMC150_ACCEL_FIFO_LENGTH frames, so l…&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;iio: accel: bmc150: clamp the device-reported FIFO frame count&lt;/p&gt;
&lt;p&gt;__bmc150_accel_fifo_flush() copies the number of samples the device
reports in its hardware FIFO into an on-stack buffer&lt;/p&gt;
&lt;p&gt;u16 buffer[BMC150_ACCEL_FIFO_LENGTH * 3];&lt;/p&gt;
&lt;p&gt;which is sized for at most BMC150_ACCEL_FIFO_LENGTH (32) samples. The
frame count is read from the FIFO_STATUS register and only masked to its
7 valid bits:&lt;/p&gt;
&lt;p&gt;count = val &amp;amp; 0x7F;&lt;/p&gt;
&lt;p&gt;so it can be 0..127. The only other limit applied to it is the optional
caller-supplied sample budget:&lt;/p&gt;
&lt;p&gt;if (samples &amp;amp;&amp;amp; count &amp;gt; samples)
		count = samples;&lt;/p&gt;
&lt;p&gt;which does not constrain count on the flush-all path (samples == 0), and
leaves it well above 32 whenever samples is larger. count samples are
then transferred into buffer[]:&lt;/p&gt;
&lt;p&gt;bmc150_accel_fifo_transfer(data, (u8 *)buffer, count);&lt;/p&gt;
&lt;p&gt;bmc150_accel_fifo_transfer() reads count * 6 bytes through regmap, so a
malfunctioning, malicious or counterfeit accelerometer (or an attacker
tampering with the I2C/SPI bus) that reports up to 127 frames writes up
to 762 bytes into the 192-byte buffer: a stack out-of-bounds write of up
to 570 bytes that clobbers the stack canary, saved registers and the
return address.&lt;/p&gt;
&lt;p&gt;Clamp count to BMC150_ACCEL_FIFO_LENGTH, the number of samples buffer[]
is sized for, before the transfer, mirroring the watermark clamp already
done in bmc150_accel_set_watermark(). A well-formed flush reports at most
BMC150_ACCEL_FIFO_LENGTH frames, so l…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-64504</guid>
    </item>
  </channel>
</rss>
