CVE-2026-31466
Received Received - Intake
Race Condition in Linux Kernel mm/huge_memory Causes Folio Locking Bug

Publication date: 2026-04-22

Last updated on: 2026-04-22

Assigner: kernel.org

Description
In the Linux kernel, the following vulnerability has been resolved: mm/huge_memory: fix folio isn't locked in softleaf_to_folio() On arm64 server, we found folio that get from migration entry isn't locked in softleaf_to_folio(). This issue triggers when mTHP splitting and zap_nonpresent_ptes() races, and the root cause is lack of memory barrier in softleaf_to_folio(). The race is as follows: CPU0 CPU1 deferred_split_scan() zap_nonpresent_ptes() lock folio split_folio() unmap_folio() change ptes to migration entries __split_folio_to_order() softleaf_to_folio() set flags(including PG_locked) for tail pages folio = pfn_folio(softleaf_to_pfn(entry)) smp_wmb() VM_WARN_ON_ONCE(!folio_test_locked(folio)) prep_compound_page() for tail pages In __split_folio_to_order(), smp_wmb() guarantees page flags of tail pages are visible before the tail page becomes non-compound. smp_wmb() should be paired with smp_rmb() in softleaf_to_folio(), which is missed. As a result, if zap_nonpresent_ptes() accesses migration entry that stores tail pfn, softleaf_to_folio() may see the updated compound_head of tail page before page->flags. This issue will trigger VM_WARN_ON_ONCE() in pfn_swap_entry_folio() because of the race between folio split and zap_nonpresent_ptes() leading to a folio incorrectly undergoing modification without a folio lock being held. This is a BUG_ON() before commit 93976a20345b ("mm: eliminate further swapops predicates"), which in merged in v6.19-rc1. To fix it, add missing smp_rmb() if the softleaf entry is migration entry in softleaf_to_folio() and softleaf_to_page(). [[email protected]: update function name and comments]
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-04-22
Last Modified
2026-04-22
Generated
2026-05-07
AI Q&A
2026-04-22
EPSS Evaluated
2026-05-05
NVD
EUVD
Affected Vendors & Products
Showing 2 associated CPEs
Vendor Product Version / Range
linux linux_kernel *
linux linux_kernel 6.19-rc1
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-UNKNOWN
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?

This vulnerability exists in the Linux kernel's memory management subsystem, specifically in the handling of huge memory pages on arm64 servers. The issue arises because a function called softleaf_to_folio() does not properly lock a memory folio when accessing it, due to a missing memory barrier (smp_rmb()).

The problem occurs during a race condition between two kernel operations: splitting a huge transparent huge page (mTHP) and a function called zap_nonpresent_ptes(). Because of the missing memory barrier, softleaf_to_folio() may see inconsistent page flags, leading to a folio being modified without holding the proper lock.

This race condition can trigger warnings or bugs in the kernel (VM_WARN_ON_ONCE() or BUG_ON()), indicating that the kernel's memory management is in an inconsistent state.

The fix involves adding the missing memory barrier (smp_rmb()) in softleaf_to_folio() and softleaf_to_page() functions to ensure proper synchronization and locking.


How can this vulnerability impact me? :

This vulnerability can cause the Linux kernel to encounter race conditions in memory management, potentially leading to kernel warnings or crashes.

Such instability can affect system reliability and availability, especially on arm64 servers using huge memory pages.

While the description does not explicitly mention security exploits like privilege escalation or data leakage, kernel crashes or instability can disrupt services and lead to denial of service conditions.


What immediate steps should I take to mitigate this vulnerability?

This vulnerability has been fixed by adding a missing memory barrier (smp_rmb()) in the Linux kernel functions softleaf_to_folio() and softleaf_to_page().

To mitigate this vulnerability immediately, you should update your Linux kernel to version 6.19-rc1 or later, where the fix has been merged.


How can this vulnerability be detected on my network or system? Can you suggest some commands?

This vulnerability is related to a race condition in the Linux kernel's memory management on arm64 servers, specifically involving folio locking during migration entries. Detection would typically involve monitoring kernel logs for warnings or errors triggered by this race condition.

Since the issue triggers VM_WARN_ON_ONCE() in pfn_swap_entry_folio(), you can check your system's kernel logs (e.g., using dmesg or journalctl) for messages related to VM_WARN or BUG_ON events that indicate folio locking problems.

Suggested commands to detect potential symptoms include:

  • dmesg | grep -i 'VM_WARN_ON_ONCE'
  • journalctl -k | grep -i 'VM_WARN_ON_ONCE'
  • journalctl -k | grep -i 'BUG_ON'

Additionally, monitoring for kernel crashes or instability on arm64 servers running affected kernel versions before v6.19-rc1 may help identify the presence of this issue.


Ask Our AI Assistant
Need more information? Ask your question to get an AI reply (Powered by our expertise)
0/70
EPSS Chart