CVE-2024-42234: mm: fix crashes from deferred split racing folio migration
In the Linux kernel, the following vulnerability has been resolved:
mm: fix crashes from deferred split racing folio migration
Even on 6.10-rc6, I've been seeing elusive "Bad page state"s (often on
flags when freeing, yet the flags shown are not bad: PG_locked had been
set and cleared??), and VM_BUG_ON_PAGE(page_ref_count(page) == 0)s from
deferred_split_scan()'s folio_put(), and a variety of other BUG and WARN
symptoms implying double free by deferred split and large folio migration.
6.7 commit 9bcef5973e31 ("mm: memcg: fix split queue list crash when large
folio migration") was right to fix the memcg-dependent locking broken in
85ce2c517ade ("memcontrol: only transfer the memcg data for migration"),
but missed a subtlety of deferred_split_scan(): it moves folios to its own
local list to work on them without split_queue_lock, during which time
folio->_deferred_list is not empty, but even the "right" lock does nothing
to secure the folio and the list it is on.
Fortunately, deferred_split_scan() is careful to use folio_try_get(): so
folio_migrate_mapping() can avoid the race by folio_undo_large_rmappable()
while the old folio's reference count is temporarily frozen to 0 - adding
such a freeze in the !mapping case too (originally, folio lock and
unmapping and no swap cache left an anon folio unreachable, so no freezing
was needed there: but the deferred split queue offers a way to reach it).
Security readout for executives and security teams
Plain-English summary
A Linux kernel memory-management race can corrupt page state when deferred splitting overlaps large-folio migration. Reported outcomes include double-free-like conditions, kernel BUG/WARN messages, and crashes. Exploitation requires local, low-privilege access according to the supplied CVSS assessment, so exposed multi-user or workload-hosting systems deserve prompt attention.
Executive priority
Treat as a high-priority kernel update for systems permitting local users or untrusted workloads. Schedule prompt vendor-supported patching and reboot validation. There is no supplied evidence of active exploitation, so emergency internet-edge response is not indicated solely by this record; prioritize according to local-access exposure and service criticality.
Technical view
The race occurs because deferred_split_scan() temporarily moves folios onto a local list without split_queue_lock while migration can still reach them. The incomplete locking correction introduced around Linux 6.7 did not secure that list state. The published fix prevents migration from racing while the old folio reference count is frozen, including the anonymous-folio no-mapping case.
Likely exposure
The bundle identifies Linux 6.7, 6.9.10, and 6.10 as affected, but its version-range notation is incomplete or ambiguous. Systems running those kernels, especially where untrusted local users or workloads can execute, should be assessed. Confirm exposure against the exact vendor kernel build and whether either referenced stable fix is included.
Exploitation context
The supplied CVSS is 7.8 with local access, low complexity, low privileges, and no user interaction. Reported effects indicate memory corruption and denial of service, while the CVSS rates confidentiality, integrity, and availability impacts high. KEV is false, and the supplied sources provide no evidence of active exploitation or a public exploit.
Researcher notes
The record describes an elusive concurrency flaw involving deferred splitting, memcg-related split queues, large-folio migration, and temporarily frozen reference counts. Symptoms varied and suggested double free. The two kernel.org references are the authoritative fix records supplied. Exact affected and fixed release boundaries cannot be established confidently from the bundle’s ambiguous version data alone.
Mitigation direction
Install a vendor-supported kernel update containing the referenced stable fix.
Check distribution security guidance for the exact corrected package and reboot requirements.
Restrict unnecessary local access and untrusted workload execution until remediation is complete.
Prioritize shared, multi-user, and workload-hosting Linux systems.
Validation and detection
Inventory running kernel versions and vendor package release identifiers.
Verify whether either referenced fix commit is present in each deployed kernel.
Confirm updated systems booted into the corrected kernel after maintenance.
Review kernel logs for Bad page state, VM_BUG_ON_PAGE, BUG, or WARN events.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2024-42234 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.