CVE-2026-64130: mm/page_alloc: fix initialization of tags of the huge zero folio with init_on_free

Published Jul 19, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

mm/pagealloc: fix initialization of tags of the huge zero folio with initonfree

GFPZEROTAGS semantics are currently a bit weird, but effectively this flag is only ever set alongside GFPZERO and GFPSKIPKASAN.

If we run with initonfree, we will zero out pages during freepagesprepare(), to skip zeroing on the allocation path.

However, when allocating with GFPZEROTAG set, postallochook() will consequently not only skip clearing page content, but also skip clearing tag memory.

Not clearing tags through GFPZEROTAGS is irrelevant for most pages that will get mapped to user space through setpteat() later: setpteat() and friends will detect that the tags have not been initialized yet (PGmtetagged not set), and initialize them.

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.

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 initonfree is enabled.

Fix it by decoupling GFPZEROTAGS from GFPZERO, passing to tagclearhighpages() whether we want to also clear page content.

Invert the meaning of the tagclearhighpages() return value to have clearer semantics.

Reproduced with the huge zero folio by modifying the checkbufferfill arm64/mte selftest to use a 2 MiB area, after making sure that pages have a non-0 tag set when freeing (note that, during boot, we will not actually initialize tags, but only set KASANTAGKERNEL in the page flags).

$ ./checkbufferfill 1..20 ... not ok 17 Check initial tags with private mapping, sync error mode and mmap memory not ok 18 Check initial tags with private mapping, sync error mode and mmap/mprotect memory ...

This code needs more cleanups; we'll tackle that next, like decoupling GFPZEROTAGS from GFPSKIPKASAN.

[akpm@linux-foundation.org: s/GPFZERO/GFPZERO/, per David]

Affected Software

10 affected components
Linux Kernel
Linux Linux kernel>=6.18.1<6.18.34
Linux Linux kernel>=6.19<7.0.11
Linux Linux kernel=6.18
Linux Linux kernel=6.18-rc6
Linux Linux kernel=6.18-rc7
Linux Linux kernel=7.1-rc1
Linux Linux kernel=7.1-rc2
Linux Linux kernel=7.1-rc3
Linux Linux kernel=7.1-rc4

Event History

Jul 19, 2026
CVE Published
via MITRE·03:40 PM
Data Sourced
via MITRE·03:40 PM
Description
Data Sourced
via NVD·04:17 PM
RemedyDescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-64130?

CVE-2026-64130 has a risk rating of 37.

2

How do I fix CVE-2026-64130?

Fixing CVE-2026-64130 requires updating to the patched version of the Linux kernel that addresses this vulnerability.

3

What type of vulnerability is CVE-2026-64130?

CVE-2026-64130 is a vulnerability related to memory management in the Linux kernel.

4

What components are affected by CVE-2026-64130?

CVE-2026-64130 affects the mm/page_alloc component of the Linux kernel.

5

When was CVE-2026-64130 published?

CVE-2026-64130 was published on July 19, 2026.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203