<?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 12:07:10 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-53155 — mm/huge_memory: use correct flags for device private PMD entry</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-53155</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;mm/huge_memory: use correct flags for device private PMD entry&lt;/p&gt;
&lt;p&gt;Commit 65edfda6f3f2 (&amp;#34;mm/rmap: extend rmap and migration support
device-private entries&amp;#34;) updated set_pmd_migration_entry() to use
pmdp_huge_get_and_clear() in the softleaf case, but made no further
adjustments to the function itself.&lt;/p&gt;
&lt;p&gt;Therefore this function continues to incorrectly use pmd_write(),
pmd_soft_dirty() and pmd_uffd_wp() to determine whether the installed
migration entry should be marked writable, softdirty or uffd-wp
respectively.&lt;/p&gt;
&lt;p&gt;Whilst all are incorrect, the most problematic of these is pmd_write(), as
this can lead to corrupted rmap state.&lt;/p&gt;
&lt;p&gt;On x86-64 _PAGE_SWP_SOFT_DIRTY is aliased to _PAGE_RW.  So calling
pmd_write() on a softleaf will return the softdirty state encoded in the
entry, assuming CONFIG_MEM_SOFT_DIRTY was enabled.&lt;/p&gt;
&lt;p&gt;This was observed when running the hmm.hmm_device_private.anon_write_child
selftest:&lt;/p&gt;
&lt;p&gt;1. The test faults in a range then migrates it such that a device-private
   THP range is established.&lt;/p&gt;
&lt;p&gt;2. The parent then migrates it to a device-private writable PMD entry whose
   folio is entirely AnonExclusive with entire_mapcount=1, softdirty set
   (accidentally correct write state).&lt;/p&gt;
&lt;p&gt;3. The parent forks and the PMD entries are set to device-private read only
   entries, entire_mapcount=2, softdirty still set.&lt;/p&gt;
&lt;p&gt;4. [BUG] The child writes to the range then migrates to RAM - intending to
   install non-writable m…&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;mm/huge_memory: use correct flags for device private PMD entry&lt;/p&gt;
&lt;p&gt;Commit 65edfda6f3f2 (&amp;#34;mm/rmap: extend rmap and migration support
device-private entries&amp;#34;) updated set_pmd_migration_entry() to use
pmdp_huge_get_and_clear() in the softleaf case, but made no further
adjustments to the function itself.&lt;/p&gt;
&lt;p&gt;Therefore this function continues to incorrectly use pmd_write(),
pmd_soft_dirty() and pmd_uffd_wp() to determine whether the installed
migration entry should be marked writable, softdirty or uffd-wp
respectively.&lt;/p&gt;
&lt;p&gt;Whilst all are incorrect, the most problematic of these is pmd_write(), as
this can lead to corrupted rmap state.&lt;/p&gt;
&lt;p&gt;On x86-64 _PAGE_SWP_SOFT_DIRTY is aliased to _PAGE_RW.  So calling
pmd_write() on a softleaf will return the softdirty state encoded in the
entry, assuming CONFIG_MEM_SOFT_DIRTY was enabled.&lt;/p&gt;
&lt;p&gt;This was observed when running the hmm.hmm_device_private.anon_write_child
selftest:&lt;/p&gt;
&lt;p&gt;1. The test faults in a range then migrates it such that a device-private
   THP range is established.&lt;/p&gt;
&lt;p&gt;2. The parent then migrates it to a device-private writable PMD entry whose
   folio is entirely AnonExclusive with entire_mapcount=1, softdirty set
   (accidentally correct write state).&lt;/p&gt;
&lt;p&gt;3. The parent forks and the PMD entries are set to device-private read only
   entries, entire_mapcount=2, softdirty still set.&lt;/p&gt;
&lt;p&gt;4. [BUG] The child writes to the range then migrates to RAM - intending to
   install non-writable m…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-53155</guid>
    </item>
  </channel>
</rss>
