<?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>Wed, 30 Sep 2026 18:18:10 +0000</lastBuildDate>
    <item>
      <title>CVE-2022-49760 — mm/hugetlb: fix PTE marker handling in hugetlb_change_protection()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2022-49760</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/hugetlb: fix PTE marker handling in hugetlb_change_protection()&lt;/p&gt;
&lt;p&gt;Patch series &amp;#34;mm/hugetlb: uffd-wp fixes for hugetlb_change_protection()&amp;#34;.&lt;/p&gt;
&lt;p&gt;Playing with virtio-mem and background snapshots (using uffd-wp) on
hugetlb in QEMU, I managed to trigger a VM_BUG_ON().  Looking into the
details, hugetlb_change_protection() seems to not handle uffd-wp correctly
in all cases.&lt;/p&gt;
&lt;p&gt;Patch #1 fixes my test case.  I don&amp;#39;t have reproducers for patch #2, as it
requires running into migration entries.&lt;/p&gt;
&lt;p&gt;I did not yet check in detail yet if !hugetlb code requires similar care.&lt;/p&gt;
&lt;p&gt;This patch (of 2):&lt;/p&gt;
&lt;p&gt;There are two problematic cases when stumbling over a PTE marker in
hugetlb_change_protection():&lt;/p&gt;
&lt;p&gt;(1) We protect an uffd-wp PTE marker a second time using uffd-wp: we will
    end up in the &amp;#34;!huge_pte_none(pte)&amp;#34; case and mess up the PTE marker.&lt;/p&gt;
&lt;p&gt;(2) We unprotect a uffd-wp PTE marker: we will similarly end up in the
    &amp;#34;!huge_pte_none(pte)&amp;#34; case even though we cleared the PTE, because
    the &amp;#34;pte&amp;#34; variable is stale. We&amp;#39;ll mess up the PTE marker.&lt;/p&gt;
&lt;p&gt;For example, if we later stumble over such a &amp;#34;wrongly modified&amp;#34; PTE marker,
we&amp;#39;ll treat it like a present PTE that maps some garbage page.&lt;/p&gt;
&lt;p&gt;This can, for example, be triggered by mapping a memfd backed by huge
pages, registering uffd-wp, uffd-wp&amp;#39;ing an unmapped page and (a)
uffd-wp&amp;#39;ing it a second time; or (b) uffd-unprotecting it; or (c)
unregistering uffd-wp. Then, ff we trigger fallocate…&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/hugetlb: fix PTE marker handling in hugetlb_change_protection()&lt;/p&gt;
&lt;p&gt;Patch series &amp;#34;mm/hugetlb: uffd-wp fixes for hugetlb_change_protection()&amp;#34;.&lt;/p&gt;
&lt;p&gt;Playing with virtio-mem and background snapshots (using uffd-wp) on
hugetlb in QEMU, I managed to trigger a VM_BUG_ON().  Looking into the
details, hugetlb_change_protection() seems to not handle uffd-wp correctly
in all cases.&lt;/p&gt;
&lt;p&gt;Patch #1 fixes my test case.  I don&amp;#39;t have reproducers for patch #2, as it
requires running into migration entries.&lt;/p&gt;
&lt;p&gt;I did not yet check in detail yet if !hugetlb code requires similar care.&lt;/p&gt;
&lt;p&gt;This patch (of 2):&lt;/p&gt;
&lt;p&gt;There are two problematic cases when stumbling over a PTE marker in
hugetlb_change_protection():&lt;/p&gt;
&lt;p&gt;(1) We protect an uffd-wp PTE marker a second time using uffd-wp: we will
    end up in the &amp;#34;!huge_pte_none(pte)&amp;#34; case and mess up the PTE marker.&lt;/p&gt;
&lt;p&gt;(2) We unprotect a uffd-wp PTE marker: we will similarly end up in the
    &amp;#34;!huge_pte_none(pte)&amp;#34; case even though we cleared the PTE, because
    the &amp;#34;pte&amp;#34; variable is stale. We&amp;#39;ll mess up the PTE marker.&lt;/p&gt;
&lt;p&gt;For example, if we later stumble over such a &amp;#34;wrongly modified&amp;#34; PTE marker,
we&amp;#39;ll treat it like a present PTE that maps some garbage page.&lt;/p&gt;
&lt;p&gt;This can, for example, be triggered by mapping a memfd backed by huge
pages, registering uffd-wp, uffd-wp&amp;#39;ing an unmapped page and (a)
uffd-wp&amp;#39;ing it a second time; or (b) uffd-unprotecting it; or (c)
unregistering uffd-wp. Then, ff we trigger fallocate…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2022-49760</guid>
    </item>
  </channel>
</rss>
