CVE-2025-21931: hwpoison, memory_hotplug: lock folio before unmap hwpoisoned folio
In the Linux kernel, the following vulnerability has been resolved:
hwpoison, memory_hotplug: lock folio before unmap hwpoisoned folio
Commit b15c87263a69 ("hwpoison, memory_hotplug: allow hwpoisoned pages to
be offlined) add page poison checks in do_migrate_range in order to make
offline hwpoisoned page possible by introducing isolate_lru_page and
try_to_unmap for hwpoisoned page. However folio lock must be held before
calling try_to_unmap. Add it to fix this problem.
Warning will be produced if folio is not locked during unmap:
------------[ cut here ]------------
kernel BUG at ./include/linux/swapops.h:400!
Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP
Modules linked in:
CPU: 4 UID: 0 PID: 411 Comm: bash Tainted: G W 6.13.0-rc1-00016-g3c434c7ee82a-dirty #41
Tainted: [W]=WARN
Hardware name: QEMU QEMU Virtual Machine, BIOS 0.0.0 02/06/2015
pstate: 40400005 (nZcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : try_to_unmap_one+0xb08/0xd3c
lr : try_to_unmap_one+0x3dc/0xd3c
Call trace:
try_to_unmap_one+0xb08/0xd3c (P)
try_to_unmap_one+0x3dc/0xd3c (L)
rmap_walk_anon+0xdc/0x1f8
rmap_walk+0x3c/0x58
try_to_unmap+0x88/0x90
unmap_poisoned_folio+0x30/0xa8
do_migrate_range+0x4a0/0x568
offline_pages+0x5a4/0x670
memory_block_action+0x17c/0x374
memory_subsys_offline+0x3c/0x78
device_offline+0xa4/0xd0
state_store+0x8c/0xf0
dev_attr_store+0x18/0x2c
sysfs_kf_write+0x44/0x54
kernfs_fop_write_iter+0x118/0x1a8
vfs_write+0x3a8/0x4bc
ksys_write+0x6c/0xf8
__arm64_sys_write+0x1c/0x28
invoke_syscall+0x44/0x100
el0_svc_common.constprop.0+0x40/0xe0
do_el0_svc+0x1c/0x28
el0_svc+0x30/0xd0
el0t_64_sync_handler+0xc8/0xcc
el0t_64_sync+0x198/0x19c
Code: f9407be0 b5fff320 d4210000 17ffff97 (d4210000)
---[ end trace 0000000000000000 ]---
Security readout for executives and security teams
Plain-English summary
This Linux kernel flaw can crash affected systems when handling a rare memory-management path: offlining a hardware-poisoned memory page. The available sources describe a kernel BUG/Oops, which points mainly to availability risk. There is no evidence in the bundle of active exploitation or remote attackability.
Executive priority
Handle through normal kernel patch governance, with higher priority for virtualization, cloud, high-availability, or hardware-error-prone systems. Current evidence supports moderate urgency: availability impact is credible, but the bundle does not show active exploitation, remote reachability, or privilege escalation.
Technical view
The issue is in hwpoison and memory_hotplug handling. The kernel attempted try_to_unmap on a hwpoisoned folio without first holding the folio lock, violating a required locking precondition and triggering a BUG/Oops during memory offlining. The resolved change adds the folio lock before unmapping.
Likely exposure
Exposure appears limited to Linux systems running affected kernel versions or downstream kernels containing the vulnerable memory hotplug and hwpoison code path. Systems that use memory offlining, memory hotplug, or hardware-poison handling deserve closer review. Product and distribution backports must be checked because source commit ranges alone may not match packaged kernels.
Exploitation context
The source bundle does not show KEV listing, public exploitation, or a complete exploitation path. The demonstrated failure occurs during memory offlining of a hwpoisoned page and results in a kernel Oops. Treat this as a plausible local availability issue until vendor advisories provide stronger impact details.
Researcher notes
Key evidence is the upstream kernel description and stable commit references. The crash trace reaches try_to_unmap via unmap_poisoned_folio, do_migrate_range, and offline_pages. Impact details remain narrow in the public bundle; downstream vendor advisories are needed to confirm affected packaged kernels and operational severity.
Mitigation direction
Update to a vendor kernel containing the referenced stable fixes.
Review Linux distribution advisories for CVE-2025-21931 coverage.
Prioritize systems using memory hotplug, memory offlining, or hwpoison handling.
Plan reboot or live-patching according to vendor kernel guidance.
Track Debian LTS and other distro advisories for backported fixes.
Validation and detection
Inventory running Linux kernel versions across affected fleets.
Compare vendor kernel changelogs against CVE-2025-21931 and referenced commits.
Confirm whether memory hotplug or hwpoison workflows are enabled or used.
Review kernel logs for BUG/Oops events during memory offline operations.
After remediation, verify systems booted into the patched kernel.
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-21931 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
1ADP providers
7Source 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.
Apr 1, 2025, 15:41 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.