Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-53109

CVE-2026-53109: Linux Kernel Privilege Escalation Flaw

CVE-2026-53109 is a privilege escalation vulnerability in the Linux kernel affecting powerpc pgtable-frag handling. This flaw occurs during PTE fragment cleanup, potentially allowing elevated privileges.

Published:

CVE-2026-53109 Overview

CVE-2026-53109 is a Linux kernel vulnerability in the powerpc architecture's page table fragment management code. The flaw resides in pte_frag_destroy() within arch/powerpc/mm/pgtable-frag.c, where a folio's active flag is not cleared before the page is freed during process exit. When a cached PTE fragment folio is released through the do_exit() path while still carrying the active flag, the kernel triggers a Bad page state error via PAGE_FLAGS_CHECK_AT_FREE. The bug surfaces on Hash MMU configurations using 64K page size, where 16 PTE fragments of 4K each share a single 64K folio.

Critical Impact

A local process exit on powerpc systems can trigger kernel Bad page state errors, corrupting page accounting and risking memory management instability.

Affected Products

  • Linux kernel on powerpc architecture (Hash MMU with 64K pages)
  • Linux kernel builds prior to commits a32db6fc, c8b71065, and fda4d716
  • IBM pSeries and POWER platforms running affected kernels

Discovery Timeline

  • 2026-06-24 - CVE-2026-53109 published to NVD
  • 2026-06-24 - Last updated in NVD database

Technical Details for CVE-2026-53109

Vulnerability Analysis

The powerpc memory subsystem uses pt_frag_refcount to track PTE and PMD page table fragments allocated from a shared folio. On Hash MMU with 64K page size, one folio contains 16 fragments of 4K each. The patch series "mm: free retracted page table by RCU" introduced pte_free_defer() to defer freeing of PTE tables when retract_page_tables() runs for madvise(MADV_COLLAPSE) on shmem ranges. pte_free_defer() sets the folio's active flag and calls pte_fragment_free(), which decrements pt_frag_refcount. When the refcount reaches zero, the active flag determines whether the folio is freed via call_rcu() or pte_free_now().

Root Cause

A race exists between fragment lifecycle management and process teardown. If a PTE fragment was allocated from a folio that still retains the active flag from a prior pte_free_defer() call, and the owning process exits while caching that folio as mm->context.pte_frag, pte_frag_destroy() invokes pagetable_dtor() and pagetable_free() without clearing the active flag. The frozen page allocator then detects the lingering PG_active flag during __free_frozen_pages() and triggers the bad_page() report.

Attack Vector

The vulnerability is reachable through the standard process exit path on affected powerpc kernels. A local user running a workload that exercises madvise(MADV_COLLAPSE) on shmem mappings, then terminates, can drive the corner case. The reported call trace shows the failure path: system_call_vectored_commondo_exitexit_mmaparch_exit_mmappte_frag_destroy__free_frozen_pagesbad_page. Exploitation requires local code execution and the specific Hash MMU 64K configuration. The vendor fix clears the folio active flag in pte_frag_destroy() before calling pagetable_dtor() and pagetable_free() when the refcount is zero.

Detection Methods for CVE-2026-53109

Indicators of Compromise

  • Kernel log entries containing BUG: Bad page state in process originating from pte_frag_destroy+
  • PAGE_FLAGS_CHECK_AT_FREE flag(s) set messages with the active flag visible in the page dump
  • Call traces showing arch_exit_mmappte_frag_destroy__free_frozen_pagesbad_page on powerpc hosts

Detection Strategies

  • Parse dmesg and /var/log/messages for bad_page reports referencing powerpc page table teardown functions
  • Correlate process exit events with kernel BUG reports to identify workloads using madvise(MADV_COLLAPSE) on shmem
  • Track kernel version inventory across powerpc fleets to flag hosts running unpatched builds

Monitoring Recommendations

  • Forward kernel ring buffer messages to a centralized log pipeline and alert on Bad page state patterns
  • Monitor process crash counts on IBM POWER hosts running Hash MMU 64K configurations
  • Audit kernel build metadata against the fixing commits a32db6fca3c7, c8b710655012, and fda4d71651f7

How to Mitigate CVE-2026-53109

Immediate Actions Required

  • Apply the upstream Linux kernel patches that clear the folio active flag inside pte_frag_destroy() before page table destructor and free calls
  • Inventory powerpc systems using Hash MMU with 64K page size and prioritize them for patching
  • Reboot affected hosts after kernel updates to ensure the fixed code path is active

Patch Information

The fix has been merged into the Linux stable tree across three commits: a32db6fca3c7, c8b710655012, and fda4d71651f7. The patch clears the folio active flag before invoking pagetable_dtor() and pagetable_free() when pt_frag_refcount reaches zero during pte_frag_destroy(). Distribution maintainers should backport these commits to supported kernel branches.

Workarounds

  • Switch powerpc systems to Radix MMU where feasible, as the issue is specific to Hash MMU 64K configurations
  • Avoid workloads that rely on madvise(MADV_COLLAPSE) against shmem mappings on unpatched kernels
  • Restrict untrusted local execution on affected hosts until patches are deployed

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.