<?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>Tue, 29 Sep 2026 10:30:14 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-53331 — slimbus: qcom-ngd-ctrl: Avoid ABBA on tx_lock/ctrl-&gt;lock</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-53331</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;slimbus: qcom-ngd-ctrl: Avoid ABBA on tx_lock/ctrl-&amp;gt;lock&lt;/p&gt;
&lt;p&gt;During the SSR/PDR down notification the tx_lock is taken with the
intent to provide synchronization with active DMA transfers.&lt;/p&gt;
&lt;p&gt;But during this period qcom_slim_ngd_down() is invoked, which ends up in
slim_report_absent(), which takes the slim_controller lock. In multiple
other codepaths these two locks are taken in the opposite order (i.e.
slim_controller then tx_lock).&lt;/p&gt;
&lt;p&gt;The result is a lockdep splat, and a possible deadlock:&lt;/p&gt;
&lt;p&gt;rprocctl/449 is trying to acquire lock:
  ffff00009793e620 (&amp;amp;ctrl-&amp;gt;lock){+.+.}-{4:4}, at: slim_report_absent (drivers/slimbus/core.c:322) slimbus&lt;/p&gt;
&lt;p&gt;but task is already holding lock:
  ffff00009793fb50 (&amp;amp;ctrl-&amp;gt;tx_lock){+.+.}-{4:4}, at: qcom_slim_ngd_ssr_pdr_notify (drivers/slimbus/qcom-ngd-ctrl.c:1475) slim_qcom_ngd_ctrl&lt;/p&gt;
&lt;p&gt;which lock already depends on the new lock.&lt;/p&gt;
&lt;p&gt;Possible unsafe locking scenario:&lt;/p&gt;
&lt;p&gt;CPU0                    CPU1
        ----                    ----
   lock(&amp;amp;ctrl-&amp;gt;tx_lock);
                                lock(&amp;amp;ctrl-&amp;gt;lock);
                                lock(&amp;amp;ctrl-&amp;gt;tx_lock);
   lock(&amp;amp;ctrl-&amp;gt;lock);&lt;/p&gt;
&lt;p&gt;The assumption is that the comment refers to the desire to not call
qcom_slim_ngd_exit_dma() while we have an ongoing DMA TX transaction.
But any such transaction is initiated and completed within a single
qcom_slim_ngd_xfer_msg().&lt;/p&gt;
&lt;p&gt;Prior to calling qcom_slim_ngd_exit_dma() the slim_controller is torn…&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;slimbus: qcom-ngd-ctrl: Avoid ABBA on tx_lock/ctrl-&amp;gt;lock&lt;/p&gt;
&lt;p&gt;During the SSR/PDR down notification the tx_lock is taken with the
intent to provide synchronization with active DMA transfers.&lt;/p&gt;
&lt;p&gt;But during this period qcom_slim_ngd_down() is invoked, which ends up in
slim_report_absent(), which takes the slim_controller lock. In multiple
other codepaths these two locks are taken in the opposite order (i.e.
slim_controller then tx_lock).&lt;/p&gt;
&lt;p&gt;The result is a lockdep splat, and a possible deadlock:&lt;/p&gt;
&lt;p&gt;rprocctl/449 is trying to acquire lock:
  ffff00009793e620 (&amp;amp;ctrl-&amp;gt;lock){+.+.}-{4:4}, at: slim_report_absent (drivers/slimbus/core.c:322) slimbus&lt;/p&gt;
&lt;p&gt;but task is already holding lock:
  ffff00009793fb50 (&amp;amp;ctrl-&amp;gt;tx_lock){+.+.}-{4:4}, at: qcom_slim_ngd_ssr_pdr_notify (drivers/slimbus/qcom-ngd-ctrl.c:1475) slim_qcom_ngd_ctrl&lt;/p&gt;
&lt;p&gt;which lock already depends on the new lock.&lt;/p&gt;
&lt;p&gt;Possible unsafe locking scenario:&lt;/p&gt;
&lt;p&gt;CPU0                    CPU1
        ----                    ----
   lock(&amp;amp;ctrl-&amp;gt;tx_lock);
                                lock(&amp;amp;ctrl-&amp;gt;lock);
                                lock(&amp;amp;ctrl-&amp;gt;tx_lock);
   lock(&amp;amp;ctrl-&amp;gt;lock);&lt;/p&gt;
&lt;p&gt;The assumption is that the comment refers to the desire to not call
qcom_slim_ngd_exit_dma() while we have an ongoing DMA TX transaction.
But any such transaction is initiated and completed within a single
qcom_slim_ngd_xfer_msg().&lt;/p&gt;
&lt;p&gt;Prior to calling qcom_slim_ngd_exit_dma() the slim_controller is torn…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-53331</guid>
    </item>
  </channel>
</rss>
