<?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://db.gcve.eu</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>Fri, 23 Oct 2026 18:08:54 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-98431 — RDMA/uverbs: Fix mmap_lock/disassociation_lock circular dependency</title>
      <link>https://db.gcve.eu/vuln/cve-2026-98431</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;RDMA/uverbs: Fix mmap_lock/disassociation_lock circular dependency&lt;/p&gt;
&lt;p&gt;Commit 51976c6cd786 (&amp;#34;RDMA/core: Provide rdma_user_mmap_disassociate()
to disassociate mmap pages&amp;#34;) introduced disassociation_lock to protect
new mmap registrations against uverbs_user_mmap_disassociate(), but
created an ABBA deadlock:&lt;/p&gt;
&lt;p&gt;Thread A (mmap / fork):
    mmap_lock -&amp;gt; disassociation_lock&lt;/p&gt;
&lt;p&gt;Thread B (disassociate):
    disassociation_lock -&amp;gt; mmap_lock&lt;/p&gt;
&lt;p&gt;Fix by removing disassociation_lock entirely and using the pre-existing
hw_destroy_rwsem instead. hw_destroy_rwsem already provides the same
protection: rdma_umap_open() and ib_uverbs_mmap() both use
down_read_trylock() before registering a new VMA, so holding hw_destroy_rwsem
in uverbs_user_mmap_disassociate() is sufficient to block new registrations.
trylock is used in both mmap paths (not blocking down_read) because
mmap_lock is already held on entry, and uverbs_user_mmap_disassociate()
acquires mmap_lock internally — a blocking read would recreate the same
deadlock.&lt;/p&gt;
&lt;p&gt;The only caller that was not taking hw_destroy_rwsem for write was
rdma_user_mmap_disassociate(). Fix it to take the rwsem per-ufile while
iterating under lists_mutex.  This is safe because ib_uverbs_close()
releases hw_destroy_rwsem entirely before acquiring lists_mutex, so the
two locks are never held simultaneously.&lt;/p&gt;
&lt;p&gt;lockdep warning:&lt;/p&gt;
&lt;p&gt;[  776.654252] ======================================================
 [  776…&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;RDMA/uverbs: Fix mmap_lock/disassociation_lock circular dependency&lt;/p&gt;
&lt;p&gt;Commit 51976c6cd786 (&amp;#34;RDMA/core: Provide rdma_user_mmap_disassociate()
to disassociate mmap pages&amp;#34;) introduced disassociation_lock to protect
new mmap registrations against uverbs_user_mmap_disassociate(), but
created an ABBA deadlock:&lt;/p&gt;
&lt;p&gt;Thread A (mmap / fork):
    mmap_lock -&amp;gt; disassociation_lock&lt;/p&gt;
&lt;p&gt;Thread B (disassociate):
    disassociation_lock -&amp;gt; mmap_lock&lt;/p&gt;
&lt;p&gt;Fix by removing disassociation_lock entirely and using the pre-existing
hw_destroy_rwsem instead. hw_destroy_rwsem already provides the same
protection: rdma_umap_open() and ib_uverbs_mmap() both use
down_read_trylock() before registering a new VMA, so holding hw_destroy_rwsem
in uverbs_user_mmap_disassociate() is sufficient to block new registrations.
trylock is used in both mmap paths (not blocking down_read) because
mmap_lock is already held on entry, and uverbs_user_mmap_disassociate()
acquires mmap_lock internally — a blocking read would recreate the same
deadlock.&lt;/p&gt;
&lt;p&gt;The only caller that was not taking hw_destroy_rwsem for write was
rdma_user_mmap_disassociate(). Fix it to take the rwsem per-ufile while
iterating under lists_mutex.  This is safe because ib_uverbs_close()
releases hw_destroy_rwsem entirely before acquiring lists_mutex, so the
two locks are never held simultaneously.&lt;/p&gt;
&lt;p&gt;lockdep warning:&lt;/p&gt;
&lt;p&gt;[  776.654252] ======================================================
 [  776…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-98431</guid>
    </item>
  </channel>
</rss>
