CVE-2026-53154: Linux Kernel Hugetlb Reservation Leak on Copy Failure
CVE-2026-53154 is a memory management bug in the Linux kernel's handling of huge pages (a performance optimization for large memory allocations). When the kernel tries to copy a huge page and that copy fails—for example, because the source page is corrupted (hwpoisoned)—it doesn't properly restore the memory reservation that was consumed for that operation. This leaves a task unable to use memory it had reserved, potentially causing it to crash with a SIGBUS signal later. The issue affects two specific code paths: copying huge pages during fork operations and when using the userfaultfd mechanism for memory fault handling.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.5 MEDIUM · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
- Weaknesses (CWE)
- CWE-772
- Affected products
- 7 configuration(s)
- Published / Modified
- 2026-06-25 / 2026-07-07
NVD description (verbatim)
In the Linux kernel, the following vulnerability has been resolved: mm/hugetlb: restore reservation on error in hugetlb folio copy paths Two sites in mm/hugetlb.c allocate a hugetlb folio via alloc_hugetlb_folio() (consuming a VMA reservation) and then call copy_user_large_folio(), which became int-returning in commit 1cb9dc4b475c ("mm: hwpoison: support recovery from HugePage copy-on-write faults") and can now fail (e.g. -EHWPOISON on a hwpoisoned source page). On the failure path, folio_put() restores the global hugetlb pool count through free_huge_folio(), but the per-VMA reservation map entry is left marked consumed: - hugetlb_mfill_atomic_pte() resubmission path (UFFDIO_COPY) - copy_hugetlb_page_range() fork-time CoW path when hugetlb_try_dup_anon_rmap() fails (rare: pinned hugetlb anon folio under fork) User-visible effect: on UFFDIO_COPY into a private hugetlb VMA where the resubmission copy fails, the reservation for that address is leaked from the VMA's reserve map. A subsequent fault at the same address takes the no-reservation path, and under hugetlb pool pressure the task is SIGBUSed at an address it had previously reserved. The fork-time CoW path leaks the same way in the child VMA's reserve map, though it requires the much rarer combination of pinned hugetlb anon page + hwpoisoned source. Add the missing restore_reserve_on_error() call before folio_put() on both error paths.
5 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
Two code paths in mm/hugetlb.c (hugetlb_mfill_atomic_pte and copy_hugetlb_page_range) allocate a hugetlb folio via alloc_hugetlb_folio(), which consumes a per-VMA reservation entry, then invoke copy_user_large_folio(). This function can now return errors (such as -EHWPOISON) following commit 1cb9dc4b475c. On error, the code calls folio_put() to decrement the global hugetlb pool count, but fails to call restore_reserve_on_error() to restore the per-VMA reservation map entry. This causes the reservation to remain marked consumed even though the folio was released, violating the invariant that consumed reservations correspond to allocated folios. The fix adds the missing restore_reserve_on_error() call before folio_put() on both error paths, ensuring per-VMA and global accounting remain consistent.
Business impact
This bug affects Linux systems that rely on huge pages and hugetlb memory management, particularly those using userfaultfd for live migration, snapshotting, or memory fault handling, or systems where fork of large memory processes occurs frequently. The practical impact is memory leakage from a task's perspective: reserved memory becomes unusable, and under memory pressure the task may be killed unexpectedly. For virtualization platforms, container orchestration systems, and databases using huge pages, this could manifest as unpredictable process termination or reduced effective memory availability. The risk is elevated in workloads with pinned hugetlb pages or those using memory hotplug and fault-injection testing.
Affected systems
Linux kernel versions that include commit 1cb9dc4b475c (which introduced int-returning behavior to copy_user_large_folio) and all subsequent versions are affected. The vulnerability applies to any Linux system with hugetlb enabled and active workloads using either (1) userfaultfd with UFFDIO_COPY on private hugetlb VMAs, or (2) fork of processes with pinned hugetlb anonymous pages. Systems without active hugetlb usage or without these specific workload patterns face lower practical risk.
Exploitability
This is not a vulnerability amenable to remote exploitation. It requires local access and specific conditions: either triggering a userfaultfd copy operation that fails (requiring hardware poison injection or similar fault conditions), or forking a process with pinned hugetlb pages while a copy-on-write fault occurs. Practical exploitation is difficult because hwpoisoned pages are rare in production; however, an attacker with ability to trigger page corruption or inject faults could cause denial-of-service through memory exhaustion or process termination. The CVSS score of 5.5 (Medium) reflects local-only access and high impact (availability loss) with low exploitability.
Remediation
Apply the kernel patch that adds restore_reserve_on_error() calls to both the hugetlb_mfill_atomic_pte and copy_hugetlb_page_range error paths. Consult your Linux distribution's security advisory for the specific kernel version containing the fix. As an interim mitigation, disable hugetlb functionality or restrict userfaultfd access if feasible for your workload. Monitor systems for unexpected SIGBUS crashes in memory-intensive processes as a sign of hit-after-miss reservation corruption.
Patch guidance
Obtain the patched kernel from your distribution's security updates (verify the specific kernel version from your vendor's advisory). The fix is minimal—two restore_reserve_on_error() calls inserted in hugetlb.c—so verification is straightforward. After patching, reboot to load the new kernel. For systems on stable LTS kernels, check whether your vendor has backported this fix; the issue applies to any kernel with the referenced commit. Test thoroughly in staging with workloads that exercise hugetlb and userfaultfd paths to confirm the fix resolves any observed memory reservation leaks.
Detection guidance
Monitor kernel logs for SIGBUS signals in applications using hugetlb, especially after userfaultfd operations or fork events involving large memory. Use perf or ftrace to instrument copy_user_large_folio() calls and their error returns. On vulnerable systems, write a test that triggers UFFDIO_COPY with a corrupted source page and verify that a subsequent fault at the same address does not cause unexpected SIGBUS. Memory reservation accounting can be inspected via /proc/meminfo and per-process hugetlb reservation maps under /proc/<pid>/smaps.
Why prioritize this
Medium severity with local-only exploitability warrants prompt but not emergency patching. Prioritize systems that (1) use hugetlb extensively (virtualization hosts, database servers, HPC), (2) employ userfaultfd for memory management, or (3) run long-lived processes that fork frequently. Organizations without active hugetlb workloads can deprioritize this vulnerability. Apply as part of routine security updates; do not delay other critical patching to address this issue.
Risk score, explained
CVSS 3.1 score of 5.5 reflects: Attack Vector Local (AV:L), Attack Complexity Low (AC:L), Privileges Required Low (PR:L), User Interaction None (UI:N), Scope Unchanged (S:U), with no Confidentiality or Integrity impact but high Availability impact (A:H). The score captures that an unprivileged local user can trigger conditions leading to memory exhaustion or process termination, but cannot exploit the flaw remotely or to gain unauthorized access to data.
Frequently asked questions
Does this vulnerability allow privilege escalation or data theft?
No. CVE-2026-53154 is purely a denial-of-service issue affecting memory availability. It cannot be exploited to read or modify data belonging to other processes, nor does it enable privilege escalation. The impact is limited to the affected task itself, which may be killed under memory pressure.
Which Linux distributions are affected?
Any Linux distribution with a kernel that includes commit 1cb9dc4b475c or later is potentially affected. This includes recent versions of Red Hat, Ubuntu, Debian, SUSE, and others. Check your vendor's security advisory for the specific kernel version containing the fix.
Can I mitigate this without patching?
Partially. If your workload does not rely on hugetlb or userfaultfd, the risk is negligible. If you must run vulnerable code, disable hugetlb (by removing hugepage mount points or setting vm.nr_hugepages=0) or restrict userfaultfd access via seccomp/AppArmor to reduce exposure. However, kernel patching is the proper fix.
How does this differ from other memory management bugs?
The uniqueness here is the split accounting: the global hugetlb pool is correctly restored on error, but the per-VMA reservation map is not. This asymmetry causes the task to believe it has no reservation when it actually consumed one, leading to unexpected faults and termination. Most memory bugs either corrupt both or neither.
This analysis is based on the publicly disclosed CVE record and kernel commit information available as of the publication date. Specific patch versions, vendor timelines, and affected kernel distributions should be verified against official advisories from your Linux distribution or kernel maintainers. Proof-of-concept code has not been evaluated and should not be deployed in production without thorough security review. Organizations should assess their own hugetlb usage and userfaultfd deployment to determine risk. This information is provided for awareness and remediation planning and should not substitute for vendor guidance or internal security assessments. Source: NVD (public-domain), retrieved 2026-08-03. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-46292MEDIUMLinux Kernel genpd Virtual Device Detachment Denial-of-Service
- CVE-2026-53251MEDIUMLinux Kernel Bluetooth ISO Reference Count Leak
- CVE-2026-40209MEDIUMDNS IXFR Connection Leak Denial-of-Service Vulnerability
- CVE-2026-45287MEDIUMOpenTelemetry-Go File Descriptor Leak & Denial of Service
- CVE-2026-45536MEDIUMNetty Unix Domain Socket File Descriptor Leak in DomainSocketChannel
- CVE-2026-48043MEDIUMNetty HTTP/2 Decompression Memory Leak DoS Vulnerability
- CVE-2026-13351HIGHZephyr IPv6 Fragment Buffer Exhaustion Denial of Service
- CVE-2026-48006HIGHNetty Redis Memory Leak – Direct Memory Exhaustion DoS