CVE-2026-23025: mm/page_alloc: prevent pcp corruption with SMP=n
Noroxi assessment
Priority: Monitor (action score 31/100)
- The sources we track (CISA KEV, Exploit-DB, Metasploit, Nuclei, GitHub) show no public exploit code or exploitation in the wild.
- Probability of exploitation in the next 30 days: 0.20% (FIRST EPSS).
- Someone with local access to the system can trigger it. A low-privileged account is enough. No user action is required. No special conditions are required; it is repeatable.
- Fixed version: Linux Linux 038a102535eb49e10e93eafac54352fcc5d78847, 3098f8f7c7b0686c74827aec42a2c45e69801ff8, 4a04ff9cd816e7346fcc8126f00ed80481f6569d.
Low priority for now. Upgrade to Linux Linux 038a102535eb49e10e93eafac54352fcc5d78847, 3098f8f7c7b0686c74827aec42a2c45e69801ff8, 4a04ff9cd816e7346fcc8126f00ed80481f6569d or later.
Generated automatically from the record's data: CVSS (NVD and CNA), CISA KEV and SSVC, FIRST EPSS, exploit sources, fixed versions. How we calculate it
Primary sources: NVD · CVE.org · FIRST EPSS
In the Linux kernel, the following vulnerability has been resolved: mm/page_alloc: prevent pcp corruption with SMP=n The kernel test robot has reported: BUG: spinlock trylock failure on UP on CPU#0, kcompactd0/28 lock: 0xffff888807e35ef0, .magic: dead4ead, .owner: kcompactd0/28, .owner_cpu: 0 CPU: 0 UID: 0 PID: 28 Comm: kcompactd0 Not tainted 6.18.0-rc5-00127-ga06157804399 #1 PREEMPT 8cc09ef94dcec767faa911515ce9e609c45db470 Call Trace: <IRQ> __dump_stack (lib/dump_stack.c:95) dump_stack_lvl (lib/dump_stack.c:123) dump_stack (lib/dump_stack.c:130) spin_dump (kernel/locking/spinlock_debug.c:71) do_raw_spin_trylock (kernel/locking/spinlock_debug.c:?) _raw_spin_trylock (include/linux/spinlock_api_smp.h:89 kernel/locking/spinlock.c:138) __free_frozen_pages (mm/page_alloc.c:2973) ___free_pages (mm/page_alloc.c:5295) __free_pages (mm/page_alloc.c:5334) tlb_remove_table_rcu (include/linux/mm.h:? include/linux/mm.h:3122 include/asm-generic/tlb.h:220 mm/mmu_gather.c:227 mm/mmu_gather.c:290) ? __cfi_tlb_remove_table_rcu (mm/mmu_gather.c:289) ? rcu_core (kernel/rcu/tree.c:?) rcu_core (include/linux/rcupdate.h:341 kernel/rcu/tree.c:2607 kernel/rcu/tree.c:2861) rcu_core_si (kernel/rcu/tree.c:2879) handle_softirqs (arch/x86/include/asm/jump_label.h:36 include/trace/events/irq.h:142 kernel/softirq.c:623) __irq_exit_rcu (arch/x86/include/asm/jump_label.h:36 kernel/softirq.c:725) irq_exit_rcu (kernel/softirq.c:741) sysvec_apic_timer_interrupt (arch/x86/kernel/apic/apic.c:1052) </IRQ> <TASK> RIP: 0010:_raw_spin_unlock_irqrestore (arch/x86/include/asm/preempt.h:95 include/linux/spinlock_api_smp.h:152 kernel/locking/spinlock.c:194) free_pcppages_bulk (mm/page_alloc.c:1494) drain_pages_zone (include/linux/spinlock.h:391 mm/page_alloc.c:2632) __drain_all_pages (mm/page_alloc.c:2731) drain_all_pages (mm/page_alloc.c:2747) kcompactd (mm/compaction.c:3115) kthread (kernel/kthread.c:465) ? __cfi_kcompactd (mm/compaction.c:3166) ? __cfi_kthread (kernel/kthread.c:412) ret_from_fork (arch/x86/kernel/process.c:164) ? __cfi_kthread (kernel/kthread.c:412) ret_from_fork_asm (arch/x86/entry/entry_64.S:255) </TASK> Matthew has analyzed the report and identified that in drain_page_zone() we are in a section protected by spin_lock(&pcp->lock) and then get an interrupt that attempts spin_trylock() on the same lock. The code is designed to work this way without disabling IRQs and occasionally fail the trylock with a fallback. However, the SMP=n spinlock implementation assumes spin_trylock() will always succeed, and thus it's normally a no-op. Here the enabled lock debugging catches the problem, but otherwise it could cause a corruption of the pcp structure. The problem has been introduced by commit 574907741599 ("mm/page_alloc: leave IRQs enabled for per-cpu page allocations"). The pcp locking scheme recognizes the need for disabling IRQs to prevent nesting spin_trylock() sections on SMP=n, but the need to prevent the nesting in spin_lock() has not been recognized. Fix it by introducing local wrappers that change the spin_lock() to spin_lock_iqsave() with SMP=n and use them in all places that do spin_lock(&pcp->lock). [vbabka@suse.cz: add pcp_ prefix to the spin_lock_irqsave wrappers, per Steven]
- Published
- Jan 31, 2026
- Updated
- Nov 5, 2026
- EPSS
- 0.2% · 10th percentile
- CWE
- —
Report tools
Action score
31
Low priority for now.
- CVSS
- 31 / 40 · 7.8 / 10
- CISA KEV
- 0 / 30 · Not listed
- EPSS
- 0 / 30 · 0.2%
CISA SSVC decision
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
Vulnrichment: CISA's decision-tree inputs.
Get told when this record changes
- Not in KEV: no record of exploitation in the wild
- No public exploit code on record
- A fix has been released
If any of these changes, we'll tell you in the daily email digest.
Is your version affected? Check itNoroxi analysis
What does it mean in your environment?
The assessment above is generated automatically from the record's data; it doesn't know your environment. Our team verifies on your systems whether this vulnerability is actually exploitable and which mitigation is enough.
We use this product, ask for helpAffected systems
Is your version affected?
Pick the product and type the version you run. It's compared with this record's version ranges in your browser; the version isn't sent anywhere.
| Vendor | Product | CPE |
|---|---|---|
| linux | linux kernel | cpe:2.3:o:linux:linux_kernel |
Versions reported by the vendor
Affected version ranges reported by the assigning authority (Linux). Independent of NVD's CPE analysis and usually ahead of it.
Linux Linux
- 6.2affected
- d1da921452b3ee7e07383c12955ab1c6f3b08752 and later · before 68688fc4eab007834b4c2d740214423ba2a335a8affected · git
- 5749077415994eb02d660b2559b9d8278521e73d and later · before 4a04ff9cd816e7346fcc8126f00ed80481f6569daffected · git
- 5749077415994eb02d660b2559b9d8278521e73d and later · before df63d31e9ae02e2f6cd96147779e4ed7cd0e75f6affected · git
- 5749077415994eb02d660b2559b9d8278521e73d and later · before 3098f8f7c7b0686c74827aec42a2c45e69801ff8affected · git
- 5749077415994eb02d660b2559b9d8278521e73d and later · before 038a102535eb49e10e93eafac54352fcc5d78847affected · git
- 6.1.57 and later · before 6.1.162affected · semver
- before 6.2not affected · semver
- 6.1.162 and later · up to and including 6.1.*not affected · semver
- 6.6.122 and later · up to and including 6.6.*not affected · semver
Affected versions · NVD (6)
NVD version ranges (for catalog products). Add the product to your stack with a version and matching uses these.
- linux linux kernel6.1.57 and later · before 6.1.162
- linux linux kernel6.2.1 and later · before 6.6.122
- linux linux kernel6.7 and later · before 6.12.67
- linux linux kernel6.13 and later · before 6.18.7
- linux linux kernel6.19
- linux linux kernel6.2
Package-level exposure
OSV and GitHub Advisory data: ecosystem, package and range. SBOM matching uses this table.
| Ecosystem | Package | Affected range | Fix |
|---|---|---|---|
| Debian:12 | linux | before 6.1.162-1 | 6.1.162-1 |
| Debian:13 | linux | before 6.12.69-1 | 6.12.69-1 |
| Debian:14 | linux | before 6.18.8-1 | 6.18.8-1 |
Same product
linux: all recordsOther highest-scoring records for the same primary product.
- CVE-2026-31431crypto: algif_aead - Revert to operating out-of-placeKEV90Now
- CVE-2022-0847A flaw was found in the way the "flags" member of the new pipe buffer structure was lacking proper initialization in copy_page_to_iter_pipe…KEV89Now
- CVE-2021-22555Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACEKEV85Now
Published before and after this one in the same product
- ← EarlierCVE-2026-23021Jan 31, 2026 · net: usb: pegasus: fix memory leak in update_eth_regs_async()22Monitor
- ← EarlierCVE-2026-23023Jan 31, 2026 · idpf: fix memory leak in idpf_vport_rel()22Monitor
- Later →CVE-2026-23026Jan 31, 2026 · dmaengine: qcom: gpi: Fix memory leak in gpi_peripheral_config()22Monitor
Remediation
Which version to upgrade to
Fix versions compiled from the vendor, package registries and Microsoft. Verify the vendor's note before upgrading.
| Product / package | Fixed version | Source |
|---|---|---|
| Linux Linux | 038a102535eb49e10e93eafac54352fcc5d78847 | Vendor (CNA) |
| Linux Linux | 3098f8f7c7b0686c74827aec42a2c45e69801ff8 | Vendor (CNA) |
| Linux Linux | 4a04ff9cd816e7346fcc8126f00ed80481f6569d | Vendor (CNA) |
| Linux Linux | 6.1.162 | Vendor (CNA) |
| Linux Linux | 68688fc4eab007834b4c2d740214423ba2a335a8 | Vendor (CNA) |
| Linux Linux | df63d31e9ae02e2f6cd96147779e4ed7cd0e75f6 | Vendor (CNA) |
| debian:linux | 6.1.162-1 · Debian:12 | Package registry (OSV) |
Exploit status
No known public exploit
No public exploit has been observed yet. That doesn't mean you're safe, only that the bar is a little higher.
Research context
For pentesters and researchers: attack profile, score disagreement, timeline, patch commits, credits, variant and chain candidates, bug bounty scope. All derived from existing data; no exploit code.
Timeline
From publication to today: proof of concept, Metasploit module, CISA KEV and fix record. Dates are as reported by the sources.
No dated events beyond publication.
Not on record for this CVE: EPSS history · patch commit or PR link · researcher credit · variant or chain candidate · public bounty program.
Technical details
Attack conditions
- Someone with local access to the system can trigger it.
- A low-privileged account is enough.
- No user action is required.
- No special conditions are required; it is repeatable.
If successful
- Confidentiality
- high · data can be read
- Integrity
- high · data or configuration can be modified
- Availability
- high · the service can be disrupted
- Attack vector
- Local
- Attack complexity
- Low
- Privileges required
- Low
- User interaction
- None
- Scope
- Unchanged
- Confidentiality impact
- High
- Integrity impact
- High
- Availability impact
- High
Weakness class (CWE)
—
CVSS vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
nvd-primary
Attack context
MITRE CAPEC attack patterns and ATT&CK techniques for this weakness class (CWE). A starting point for detection rules and threat hunting.
MITRE has no CAPEC/ATT&CK mapping for this CWE.
Change log (2)
- SSVC exploitation— → none
- Fix✗ → ✓
For records you follow, these changes also arrive as notifications. →
References
Show all references (5 more)Show less
- git.kernel.org/stable/c/3098f8f7c7b0686c74827aec42a2c45e69801ff8
- git.kernel.org/stable/c/4a04ff9cd816e7346fcc8126f00ed80481f6569d
- git.kernel.org/stable/c/68688fc4eab007834b4c2d740214423ba2a335a8
- git.kernel.org/stable/c/df63d31e9ae02e2f6cd96147779e4ed7cd0e75f6
- cert-portal.siemens.com/productcert/html/ssa-253495.html
Vendor advisories and official records. Exploit/PoC links are deliberately left out.