<?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>Sat, 03 Oct 2026 10:33:15 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-74331 — firmware_loader: Fix recursive lock in device_cache_fw_images()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-74331</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;firmware_loader: Fix recursive lock in device_cache_fw_images()&lt;/p&gt;
&lt;p&gt;A recursive locking deadlock can occur in the firmware loader&amp;#39;s power
management notification handler.&lt;/p&gt;
&lt;p&gt;During system suspend or hibernation preparation, fw_pm_notify() calls
device_cache_fw_images(). This function acquires fw_lock to set the
firmware cache state to FW_LOADER_START_CACHE and then iterates over all
devices using dpm_for_each_dev() while still holding the lock.&lt;/p&gt;
&lt;p&gt;For each device, dev_cache_fw_image() schedules asynchronous work to cache
the firmware. If memory allocation for the async work entry fails (e.g., in
out-of-memory conditions), async_schedule_node_domain() falls back to
executing the work function synchronously in the current thread.&lt;/p&gt;
&lt;p&gt;The synchronous execution path (__async_dev_cache_fw_image() -&amp;gt;
cache_firmware() -&amp;gt; request_firmware() -&amp;gt; assign_fw()) attempts to acquire
fw_lock again. Since the current thread already holds fw_lock, this results
in a recursive locking deadlock.&lt;/p&gt;
&lt;p&gt;Fix this by releasing fw_lock immediately after updating the cache state
and before calling dpm_for_each_dev(). The lock is only needed to protect
the state update. Concurrent firmware requests will correctly see the
FW_LOADER_START_CACHE state and use the piggyback mechanism, which is
independently protected by its own fwc-&amp;gt;name_lock.&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;firmware_loader: Fix recursive lock in device_cache_fw_images()&lt;/p&gt;
&lt;p&gt;A recursive locking deadlock can occur in the firmware loader&amp;#39;s power
management notification handler.&lt;/p&gt;
&lt;p&gt;During system suspend or hibernation preparation, fw_pm_notify() calls
device_cache_fw_images(). This function acquires fw_lock to set the
firmware cache state to FW_LOADER_START_CACHE and then iterates over all
devices using dpm_for_each_dev() while still holding the lock.&lt;/p&gt;
&lt;p&gt;For each device, dev_cache_fw_image() schedules asynchronous work to cache
the firmware. If memory allocation for the async work entry fails (e.g., in
out-of-memory conditions), async_schedule_node_domain() falls back to
executing the work function synchronously in the current thread.&lt;/p&gt;
&lt;p&gt;The synchronous execution path (__async_dev_cache_fw_image() -&amp;gt;
cache_firmware() -&amp;gt; request_firmware() -&amp;gt; assign_fw()) attempts to acquire
fw_lock again. Since the current thread already holds fw_lock, this results
in a recursive locking deadlock.&lt;/p&gt;
&lt;p&gt;Fix this by releasing fw_lock immediately after updating the cache state
and before calling dpm_for_each_dev(). The lock is only needed to protect
the state update. Concurrent firmware requests will correctly see the
FW_LOADER_START_CACHE state and use the piggyback mechanism, which is
independently protected by its own fwc-&amp;gt;name_lock.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-74331</guid>
    </item>
  </channel>
</rss>
