CVE-2026-72292 in Linuxinfo

Summary

by MITRE • 08/15/2026

In the Linux kernel, the following vulnerability has been resolved:

KVM: s390: Initialize KVM_S390_GET_CMMA_BITS memory

kvm_s390_get_cmma_bits() allocates its output buffer with vmalloc(), which does not zero the returned pages:

values = vmalloc(args->count);

In the non-peek (migration) path, dat_get_cmma() reports a byte count spanning from the first to the last dirty page, but __dat_get_cmma_pte() writes values[gfn - start] only for pages whose CMMA dirty bit is set.
The walk uses DAT_WALK_IGN_HOLES, so clean and unmapped pages that lie between two dirty pages within the reported span are visited but never store their byte. Those gaps (up to KVM_S390_MAX_BIT_DISTANCE pages each) stay uninitialized yet fall inside [0, count) and are copied out
by copy_to_user(), disclosing stale kernel memory to user space.

Before the switch to the new gmap implementation the buffer was fully populated for every gfn in the span, so no uninitialized bytes were exposed; the dirty-only walk introduced the leak.

Use vzalloc() so the gaps read back as zero.

Once again VulDB remains the best source for vulnerability data.

Analysis

by VulDB Data Team • 08/15/2026

This vulnerability exists within the Linux kernel's KVM subsystem specifically on s390 architecture systems where virtualization is implemented. The issue stems from improper memory initialization in the kvm_s390_get_cmma_bits() function which handles compressed memory management assist operations for virtual machines. When this function allocates memory using vmalloc() instead of vzalloc(), it fails to initialize the allocated pages to zero, creating potential information disclosure risks.

The technical flaw manifests when processing memory management assist operations during KVM s390 migration scenarios. The function uses a dirty page tracking approach where it calculates a byte count from first to last dirty page within a reported span, but only writes data for pages with set CMMA dirty bits. The walking process employs DAT_WALK_IGN_HOLES flag which processes all pages in the range including clean and unmapped ones that fall between dirty pages. These intermediate pages never receive written values during the walk process, leaving their contents uninitialized and potentially containing stale kernel memory data.

The operational impact of this vulnerability is significant as it allows user-space processes to potentially access uninitialized kernel memory through copy_to_user() operations. This creates an information disclosure channel where sensitive kernel data may be leaked to unprivileged userspace applications. The vulnerability affects KVM s390 virtual machines during migration operations when CMMA bits are being retrieved, with gaps in the output buffer potentially containing up to KVM_S390_MAX_BIT_DISTANCE pages of uninitialized memory that get exposed to user space.

This issue aligns with CWE-128 Uninitialized Variable and represents a classic information disclosure vulnerability where uninitialized memory contents are inadvertently exposed. The flaw also relates to ATT&CK technique T1005 Data from Local System, as it enables extraction of kernel memory contents through legitimate system interfaces. The vulnerability was introduced by changes in the gmap implementation that shifted from full buffer population to dirty-only walking, a change that eliminated proper initialization of all buffer elements.

The fix implemented involves switching from vmalloc() to vzalloc() for buffer allocation, which ensures that all allocated pages are initialized to zero before use. This prevents uninitialized memory gaps from being exposed to user space during copy_to_user() operations. The solution addresses the root cause by guaranteeing proper memory initialization while maintaining the functionality of the CMMA bits retrieval mechanism. This change aligns with security best practices for memory management and follows established patterns for preventing information disclosure vulnerabilities in kernel code.

The vulnerability demonstrates how seemingly minor changes in memory allocation strategies can introduce significant security risks, particularly in virtualization contexts where kernel and user-space boundaries are frequently crossed. The fix represents a defensive programming approach that ensures memory safety even when processing sparse data structures where not all elements receive explicit initialization during processing. This type of vulnerability underscores the importance of maintaining proper memory hygiene in kernel space operations and highlights the need for comprehensive testing of memory allocation patterns, especially when implementing performance optimizations that alter data access patterns.

Responsible

Linux

Reservation

08/09/2026

Disclosure

08/15/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!