MEDIUM 4.7

CVE-2026-53108: Linux Kernel PowerPC64 Race Condition Denial of Service

A race condition exists in the Linux kernel's memory management on PowerPC 64-bit systems that can trigger a kernel crash (panic) when two processes simultaneously attempt incompatible operations on the same memory pages. Specifically, when one process moves memory pages between NUMA nodes using move_pages() while another process unmaps that memory via munmap(), the kernel can encounter an assertion failure. The vulnerability requires local access and moderate effort to trigger, but results in a denial of service affecting system availability.

Source data · NVD / CISA · public domain

CVSS
3.1 · 4.7 MEDIUM · CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
Weaknesses (CWE)
CWE-362
Affected products
1 configuration(s)
Published / Modified
2026-06-24 / 2026-07-23

NVD description (verbatim)

In the Linux kernel, the following vulnerability has been resolved: powerpc/64s: Fix unmap race with PMD migration entries The following race is possible with migration swap entries or device-private THP entries. e.g. when move_pages is called on a PMD THP page, then there maybe an intermediate state, where PMD entry acts as a migration swap entry (pmd_present() is true). Then if an munmap happens at the same time, then this VM_BUG_ON() can happen in pmdp_huge_get_and_clear_full(). This patch fixes that. Thread A: move_pages() syscall add_folio_for_migration() mmap_read_lock(mm) folio_isolate_lru(folio) mmap_read_unlock(mm) do_move_pages_to_node() migrate_pages() try_to_migrate_one() spin_lock(ptl) set_pmd_migration_entry() pmdp_invalidate() # PMD: _PAGE_INVALID | _PAGE_PTE | pfn set_pmd_at() # PMD: migration swap entry (pmd_present=0) spin_unlock(ptl) [page copy phase] # <--- RACE WINDOW --> Thread B: munmap() mmap_write_downgrade(mm) unmap_vmas() -> zap_pmd_range() zap_huge_pmd() __pmd_trans_huge_lock() pmd_is_huge(): # !pmd_present && !pmd_none -> TRUE (swap entry) pmd_lock() -> # spin_lock(ptl), waits for Thread A to release ptl pmdp_huge_get_and_clear_full() VM_BUG_ON(!pmd_present(*pmdp)) # HITS! [ 287.738700][ T1867] ------------[ cut here ]------------ [ 287.743843][ T1867] kernel BUG at arch/powerpc/mm/book3s64/pgtable.c:187! cpu 0x0: Vector: 700 (Program Check) at [c00000044037f4f0] pc: c000000000094ca4: pmdp_huge_get_and_clear_full+0x6c/0x23c lr: c000000000645dec: zap_huge_pmd+0xb0/0x868 sp: c00000044037f790 msr: 800000000282b033 current = 0xc0000004032c1a00 paca = 0xc000000004fe0000 irqmask: 0x03 irq_happened: 0x09 pid = 1867, comm = a.out kernel BUG at :187! Linux version 6.19.0-12136-g14360d4f917c-dirty (powerpc64le-linux-gnu-gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #27 SMP PREEMPT Sun Feb 22 10:38:56 IST 2026 enter ? for help [link register ] c000000000645dec zap_huge_pmd+0xb0/0x868 [c00000044037f790] c00000044037f7d0 (unreliable) [c00000044037f7d0] c000000000645dcc zap_huge_pmd+0x90/0x868 [c00000044037f840] c0000000005724cc unmap_page_range+0x176c/0x1f40 [c00000044037fa00] c000000000572ea0 unmap_vmas+0xb0/0x1d8 [c00000044037fa90] c0000000005af254 unmap_region+0xb4/0x128 [c00000044037fb50] c0000000005af400 vms_complete_munmap_vmas+0x138/0x310 [c00000044037fbe0] c0000000005b0f1c do_vmi_align_munmap+0x1ec/0x238 [c00000044037fd30] c0000000005b3688 __vm_munmap+0x170/0x1f8 [c00000044037fdf0] c000000000587f74 sys_munmap+0x2c/0x40 [c00000044037fe10] c000000000032668 system_call_exception+0x128/0x350 [c00000044037fe50] c00000000000d05c system_call_vectored_common+0x15c/0x2ec ---- Exception: 3000 (System Call Vectored) at 0000000010064a2c SP (7fff9b1ee9c0) is in userspace 0:mon> zh commit a30b48bf1b24 ("mm/migrate_device: implement THP migration of zone device pages"), enabled migration for device-private PMD entries. Hence this is one other path where this warning could get trigger from. ------------[ cut here ]------------ WARNING: arch/powerpc/mm/book3s64/hash_pgtable.c:199 at hash__pmd_hugepage_update+0x48/0x284, CPU#3: hmm-tests/1905 Modules linked in: test_hmm CPU: 3 UID: 0 PID: 1905 Comm: hmm-tests Tainted: G B W L N 7.0.0-rc1-01438-g7e2f0ee7581c #21 PREEMPT Tainted: [B]=BAD_PAGE, [W]=WARN, [L]=SOFTLOCKUP, [N]=TEST Hardware name: IBM pSeries (emulated by qemu) POWER10 (architected) 0x801200 0xf000006 of:SLOF,git-ee03ae pSeries NIP [c000000000096b70] hash__pmd_hugepage_update+0x48/0x284 LR [c000000000096e7c] hash__pmdp_huge_get_and_clear+0xd0/0xd4 Call Trace: [c000000604707670] [c000000004e102b8] 0xc000000004e102b8 (unreliable) [c000000604707700] [c00000000064ec3c] set_pmd_migration_entry+0x414/0x498 [c000000604707760] [c00000000063e5a4] migrate_vma_col ---truncated---

2 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-53108 addresses a synchronization race in the PowerPC 64-bit kernel page table management, specifically in the handling of THP (transparent huge page) migration entries. The vulnerability occurs in the pmdp_huge_get_and_clear_full() function when a PMD entry transitions through a migration swap state. Thread A initiates folio migration via move_pages(), setting a migration entry and leaving the PMD in a state where pmd_present() returns true while pmd_none() returns false. Concurrently, Thread B executes munmap(), which interprets this intermediate state as a valid huge page and invokes zap_huge_pmd(). When the lock is acquired, pmdp_huge_get_and_clear_full() encounters a VM_BUG_ON assertion failure because the PMD no longer satisfies the expected presence condition. This race window exists between pmdp_invalidate() and the completion of page copying during migration. The issue also affects device-private THP migration paths enabled by commit a30b48bf1b24.

Business impact

This vulnerability enables a local denial of service attack on PowerPC 64-bit Linux systems. An attacker with local user privileges can crash the kernel by coordinating memory operations, resulting in system downtime and potential data loss if workloads are not gracefully recovered. For organizations running HPC, cloud infrastructure, or containerized services on PowerPC64 systems, kernel panics degrade availability and may trigger cascading failures. The low complexity of triggering the race (basic syscalls) relative to CVSS scoring reflects the moderate exploitation barrier, though the impact is severe for affected environments.

Affected systems

The vulnerability affects the Linux kernel on PowerPC 64-bit architectures (powerpc64le and powerpc64). Systems running kernels with transparent huge page migration support are in scope. The vulnerability does not affect x86 or other architectures. Affected versions span a range of kernel releases prior to the fix commit; consult the vendor advisory to identify the specific patched kernel version for your distribution. Organizations should prioritize systems running RHEL/CentOS on PowerPC64, Debian/Ubuntu on ppc64el, or other distributions on this architecture.

Exploitability

Exploitation requires local user-level access and the ability to execute syscalls. An attacker must reliably create a race condition between move_pages() and munmap() on the same memory range, which demands timing precision but requires no elevated privileges or complex techniques. The race window is narrow but reproducible under load or with deliberate coordination. No public exploit code exists (KEV status: not listed), reducing the immediate risk from automated attack tools. However, proof-of-concept triggering has been demonstrated during kernel development, indicating the condition is practically exploitable.

Remediation

Remediation requires applying a kernel patch that serializes or eliminates the race condition in the migration entry handling. The fix modifies the check in pmdp_huge_get_and_clear_full() or related code to safely handle the intermediate migration entry state. Organizations should verify the specific patch commit hash against their kernel version. Updates are typically delivered through distribution kernel updates (e.g., kernel-ml, kernel security updates). In the interim, environments can mitigate risk by disabling transparent huge page migration if operationally feasible, though this may impact performance.

Patch guidance

Obtain the patched kernel version from your Linux distribution's security channel. For RHEL/CentOS, check errata advisories; for Debian/Ubuntu, monitor security-tracker and security.ubuntu.com. Verify the kernel build includes the fix to pmdp_huge_get_and_clear_full() or the migration entry handling in arch/powerpc/mm/book3s64/pgtable.c. After patching, perform a test reboot to confirm system stability and monitor for any performance regressions. If running containers or virtualization, update the host kernel; guest kernels may require separate patching depending on your stack.

Detection guidance

Monitor system logs (dmesg, journalctl) for kernel BUG messages referencing pmdp_huge_get_and_clear_full() or VM_BUG_ON failures in pgtable.c around line 187 on PowerPC64 systems. Unscheduled kernel panics on PowerPC64 systems during memory-intensive workloads or after running move_pages() operations may indicate exploitation. Set up alerting for kernel oops and panic events. Correlation of munmap() syscall activity with page migration operations in process accounting logs may reveal suspicious patterns, though this requires detailed tracing.

Why prioritize this

Prioritize patching PowerPC64 systems due to the direct path to kernel panic (denial of service) requiring only local access. While CVSS 4.7 reflects moderate severity, the practical impact on availability for affected platforms justifies prioritization ahead of higher-scored vulnerabilities affecting fewer systems. Organizations without PowerPC64 infrastructure can deprioritize, though patches should be applied during routine kernel updates to maintain defense in depth.

Risk score, explained

CVSS 4.7 (MEDIUM) is driven by: (1) local attack vector requiring no network access; (2) high attack complexity reflecting the narrow race window and timing requirements; (3) low privilege requirement (standard user); (4) no impact on confidentiality or integrity; (5) high availability impact (kernel crash). The score appropriately reflects that while triggering requires some effort and local access, successful exploitation causes complete denial of service.

Frequently asked questions

Does this vulnerability affect my x86-64 Linux system?

No. CVE-2026-53108 is specific to PowerPC 64-bit architecture (powerpc64 and powerpc64le). It does not affect x86, x86-64, ARM, or other architectures. Check your system architecture using `uname -m`; if it does not show 'ppc64' or 'ppc64le', this vulnerability does not apply.

Can this vulnerability be exploited remotely?

No. The vulnerability requires local user-level access to execute the move_pages() and munmap() syscalls. It cannot be exploited over the network and does not provide remote code execution. An attacker must have a shell or session on the affected system.

What is the difference between this and other kernel race conditions?

This race is specific to the interaction between page migration (move_pages) and memory unmapping (munmap) on PowerPC THP handling. Most kernel race conditions have narrower windows or affect fewer code paths. The fix ensures that the migration entry state is safely handled without triggering assertion failures, preventing the kernel panic.

Will transparent huge pages being disabled prevent this?

Disabling THP entirely would prevent this race, but it is an extreme mitigation that sacrifices performance benefits. The recommended mitigation is to apply the kernel patch, which fixes the race without disabling THP. Disabling THP should only be considered if patching is not immediately possible.

This analysis is provided for informational purposes and reflects publicly available information as of the publication date. Exploit details and proof-of-concept code are intentionally omitted. Organizations should verify patch availability and applicability through their distribution vendor's official security advisories before deploying updates. SEC.co makes no warranty regarding the completeness or accuracy of remediation guidance for specific deployments. In-depth testing in non-production environments is strongly recommended prior to applying patches to production systems. Source: NVD (public-domain), retrieved 2026-08-02. Analysis generated by SEC.co (claude-haiku-4-5).