<?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 08:23:33 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-64130 — mm/page_alloc: fix initialization of tags of the huge zero folio with init_on_free</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-64130</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/page_alloc: fix initialization of tags of the huge zero folio with init_on_free&lt;/p&gt;
&lt;p&gt;__GFP_ZEROTAGS semantics are currently a bit weird, but effectively this
flag is only ever set alongside __GFP_ZERO and __GFP_SKIP_KASAN.&lt;/p&gt;
&lt;p&gt;If we run with init_on_free, we will zero out pages during
__free_pages_prepare(), to skip zeroing on the allocation path.&lt;/p&gt;
&lt;p&gt;However, when allocating with __GFP_ZEROTAG set, post_alloc_hook() will
consequently not only skip clearing page content, but also skip clearing
tag memory.&lt;/p&gt;
&lt;p&gt;Not clearing tags through __GFP_ZEROTAGS is irrelevant for most pages that
will get mapped to user space through set_pte_at() later: set_pte_at() and
friends will detect that the tags have not been initialized yet
(PG_mte_tagged not set), and initialize them.&lt;/p&gt;
&lt;p&gt;However, for the huge zero folio, which will be mapped through a PMD
marked as special, this initialization will not be performed, ending up
exposing whatever tags were still set for the pages.&lt;/p&gt;
&lt;p&gt;The docs (Documentation/arch/arm64/memory-tagging-extension.rst) state
that allocation tags are set to 0 when a page is first mapped to user
space.  That no longer holds with the huge zero folio when init_on_free is
enabled.&lt;/p&gt;
&lt;p&gt;Fix it by decoupling __GFP_ZEROTAGS from __GFP_ZERO, passing to
tag_clear_highpages() whether we want to also clear page content.&lt;/p&gt;
&lt;p&gt;Invert the meaning of the tag_clear_highpages() return value to have
clearer semantics.&lt;/p&gt;
&lt;p&gt;Reproduced with the hug…&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/page_alloc: fix initialization of tags of the huge zero folio with init_on_free&lt;/p&gt;
&lt;p&gt;__GFP_ZEROTAGS semantics are currently a bit weird, but effectively this
flag is only ever set alongside __GFP_ZERO and __GFP_SKIP_KASAN.&lt;/p&gt;
&lt;p&gt;If we run with init_on_free, we will zero out pages during
__free_pages_prepare(), to skip zeroing on the allocation path.&lt;/p&gt;
&lt;p&gt;However, when allocating with __GFP_ZEROTAG set, post_alloc_hook() will
consequently not only skip clearing page content, but also skip clearing
tag memory.&lt;/p&gt;
&lt;p&gt;Not clearing tags through __GFP_ZEROTAGS is irrelevant for most pages that
will get mapped to user space through set_pte_at() later: set_pte_at() and
friends will detect that the tags have not been initialized yet
(PG_mte_tagged not set), and initialize them.&lt;/p&gt;
&lt;p&gt;However, for the huge zero folio, which will be mapped through a PMD
marked as special, this initialization will not be performed, ending up
exposing whatever tags were still set for the pages.&lt;/p&gt;
&lt;p&gt;The docs (Documentation/arch/arm64/memory-tagging-extension.rst) state
that allocation tags are set to 0 when a page is first mapped to user
space.  That no longer holds with the huge zero folio when init_on_free is
enabled.&lt;/p&gt;
&lt;p&gt;Fix it by decoupling __GFP_ZEROTAGS from __GFP_ZERO, passing to
tag_clear_highpages() whether we want to also clear page content.&lt;/p&gt;
&lt;p&gt;Invert the meaning of the tag_clear_highpages() return value to have
clearer semantics.&lt;/p&gt;
&lt;p&gt;Reproduced with the hug…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-64130</guid>
    </item>
  </channel>
</rss>
