<?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>Mon, 28 Sep 2026 09:28:42 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-90136 — platform/x86/amd/hsmp: Reject negative power cap writes in hwmon</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-90136</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;platform/x86/amd/hsmp: Reject negative power cap writes in hwmon&lt;/p&gt;
&lt;p&gt;hsmp_hwmon_write() takes the user-supplied hwmon value as a signed long
and assigns &amp;#34;val / MICROWATT_PER_MILLIWATT&amp;#34; to msg.args[0], which is a
__u32.  MICROWATT_PER_MILLIWATT is an unsigned long, so a negative write
to power1_cap (e.g. &amp;#34;echo -1 &amp;gt; power1_cap&amp;#34;) is first converted to a huge
unsigned value by the division and then stored into the u32 argument.&lt;/p&gt;
&lt;p&gt;As a result a nonsensical, multi-gigawatt socket power limit is sent to
the SMU via HSMP_SET_SOCKET_POWER_LIMIT instead of the write being
rejected.&lt;/p&gt;
&lt;p&gt;Reject negative values with -EINVAL before the conversion.&lt;/p&gt;
&lt;p&gt;Tested with HSMP enabled:&lt;/p&gt;
&lt;p&gt;CAP=$(dirname $(grep -l amd_hsmp_hwmon \
        /sys/class/hwmon/hwmon*/name | head -1))/power1_cap&lt;/p&gt;
&lt;p&gt;# negative write
  echo -1000000 &amp;gt; $CAP ; echo &amp;#34;ret=$?&amp;#34;
  # valid positive write must still work
  echo 400000000 &amp;gt; $CAP ; echo &amp;#34;ret=$?&amp;#34;&lt;/p&gt;
&lt;p&gt;Before:
  # echo -1000000 &amp;gt; $CAP ; echo &amp;#34;ret=$?&amp;#34;
  ret=0                             &amp;lt;- accepted; bogus limit sent to SMU
  # echo 400000000 &amp;gt; $CAP ; echo &amp;#34;ret=$?&amp;#34;
  ret=0&lt;/p&gt;
&lt;p&gt;After:
  # echo -1000000 &amp;gt; $CAP ; echo &amp;#34;ret=$?&amp;#34;
  bash: echo: write error: Invalid argument
  ret=1                             &amp;lt;- rejected with -EINVAL
  # echo 400000000 &amp;gt; $CAP ; echo &amp;#34;ret=$?&amp;#34;
  ret=0                             &amp;lt;- valid write still works&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;platform/x86/amd/hsmp: Reject negative power cap writes in hwmon&lt;/p&gt;
&lt;p&gt;hsmp_hwmon_write() takes the user-supplied hwmon value as a signed long
and assigns &amp;#34;val / MICROWATT_PER_MILLIWATT&amp;#34; to msg.args[0], which is a
__u32.  MICROWATT_PER_MILLIWATT is an unsigned long, so a negative write
to power1_cap (e.g. &amp;#34;echo -1 &amp;gt; power1_cap&amp;#34;) is first converted to a huge
unsigned value by the division and then stored into the u32 argument.&lt;/p&gt;
&lt;p&gt;As a result a nonsensical, multi-gigawatt socket power limit is sent to
the SMU via HSMP_SET_SOCKET_POWER_LIMIT instead of the write being
rejected.&lt;/p&gt;
&lt;p&gt;Reject negative values with -EINVAL before the conversion.&lt;/p&gt;
&lt;p&gt;Tested with HSMP enabled:&lt;/p&gt;
&lt;p&gt;CAP=$(dirname $(grep -l amd_hsmp_hwmon \
        /sys/class/hwmon/hwmon*/name | head -1))/power1_cap&lt;/p&gt;
&lt;p&gt;# negative write
  echo -1000000 &amp;gt; $CAP ; echo &amp;#34;ret=$?&amp;#34;
  # valid positive write must still work
  echo 400000000 &amp;gt; $CAP ; echo &amp;#34;ret=$?&amp;#34;&lt;/p&gt;
&lt;p&gt;Before:
  # echo -1000000 &amp;gt; $CAP ; echo &amp;#34;ret=$?&amp;#34;
  ret=0                             &amp;lt;- accepted; bogus limit sent to SMU
  # echo 400000000 &amp;gt; $CAP ; echo &amp;#34;ret=$?&amp;#34;
  ret=0&lt;/p&gt;
&lt;p&gt;After:
  # echo -1000000 &amp;gt; $CAP ; echo &amp;#34;ret=$?&amp;#34;
  bash: echo: write error: Invalid argument
  ret=1                             &amp;lt;- rejected with -EINVAL
  # echo 400000000 &amp;gt; $CAP ; echo &amp;#34;ret=$?&amp;#34;
  ret=0                             &amp;lt;- valid write still works&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-90136</guid>
    </item>
  </channel>
</rss>
