CVE-2025-39725: mm/vmscan: fix hwpoisoned large folio handling in shrink_folio_list
In the Linux kernel, the following vulnerability has been resolved:
mm/vmscan: fix hwpoisoned large folio handling in shrink_folio_list
In shrink_folio_list(), the hwpoisoned folio may be large folio, which
can't be handled by unmap_poisoned_folio(). For THP, try_to_unmap_one()
must be passed with TTU_SPLIT_HUGE_PMD to split huge PMD first and then
retry. Without TTU_SPLIT_HUGE_PMD, we will trigger null-ptr deref of
pvmw.pte. Even we passed TTU_SPLIT_HUGE_PMD, we will trigger a
WARN_ON_ONCE due to the page isn't in swapcache.
Since UCE is rare in real world, and race with reclaimation is more rare,
just skipping the hwpoisoned large folio is enough. memory_failure() will
handle it if the UCE is triggered again.
This happens when memory reclaim for large folio races with
memory_failure(), and will lead to kernel panic. The race is as
follows:
cpu0 cpu1
shrink_folio_list memory_failure
TestSetPageHWPoison
unmap_poisoned_folio
--> trigger BUG_ON due to
unmap_poisoned_folio couldn't
handle large folio
[tujinjiang@huawei.com: add comment to unmap_poisoned_folio()]
Security readout for executives and security teams
Plain-English summary
This Linux kernel flaw can crash a system when memory reclaim collides with handling of a hardware-poisoned large memory page. The source describes a rare race involving uncorrected memory errors, but the outcome is a kernel panic. Treat it as an availability risk for Linux systems running affected kernel versions.
Executive priority
Schedule normal-priority patching, with higher urgency for systems where unexpected reboot or panic would disrupt critical services. Current evidence points to a rare availability issue, not known active exploitation.
Technical view
shrink_folio_list() can mishandle hwpoisoned large folios. unmap_poisoned_folio() cannot handle large folios, and the THP path can hit null pointer dereference or WARN conditions. The resolved behavior skips hwpoisoned large folios and lets memory_failure() handle later UCE events.
Likely exposure
Exposure is limited to Linux kernels in the affected version set cited by the CVE data, including 6.15, 6.12.41, 6.15.9, and 6.16. Distribution backports may change practical exposure, so confirm against vendor kernel advisories and package changelogs.
Exploitation context
The provided sources do not show active exploitation, and KEV is false. Trigger conditions require a rare uncorrected memory error and a race with memory reclamation. The documented impact is local system instability or kernel panic, not remote code execution.
Researcher notes
Evidence is strongest for the kernel race and fix rationale, but incomplete for distro-specific affected ranges. Validate with upstream commits and downstream backports. Avoid overclaiming exploitability because the source describes rarity and no active exploitation signal is provided.
Mitigation direction
Update affected Linux kernels to vendor builds containing the referenced stable fixes.
Check distribution advisories before assuming upstream version numbers map directly to package exposure.
Prioritize systems where kernel panic creates high business impact.
Monitor vendor guidance for any additional mitigations or corrected affected-version mapping.
Validation and detection
Inventory Linux kernel versions across production and critical infrastructure.
Compare installed kernels with vendor advisories and the referenced upstream stable commits.
Review crash telemetry for kernel panic, hwpoison, memory_failure, vmscan, or THP-related messages.
Confirm updated systems are running the patched kernel after maintenance windows.
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-2025-39725 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.
0CVSS vectors
3Timeline events
0ADP providers
4Source links
Vulnerability timeline
Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.
CVE reservedCVE Program
The CVE ID was reserved by the assigning CNA.
CVE publishedCVE Program
The CVE record was published.
Sep 5, 2025, 17:27 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.