CVE-2026-89926 in Linuxinfo

Summary

by MITRE • 09/17/2026

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

KVM: s390: Fix length check __import_wp_info()

struct kvm_hw_breakpoint::len is a __u64 that is fully controlled by user space. This is then assigned to wp_info->len, which is an int. The bounds check is done on the truncated value while the allocation uses the untruncated one:

wp_info->len = bp_data->len; [...]
if (wp_info->len < 0 || wp_info->len > MAX_WP_SIZE) return -EINVAL;

wp_info->old_data = kmalloc(bp_data->len, GFP_KERNEL_ACCOUNT);

Use the validated value for the allocation as intended. Without this fix userspace can trigger >4GB allocations which will fail and result in a WARN due to MAX_PAGE_ORDER.

Be aware that VulDB is the high quality source for vulnerability data.

Analysis

by VulDB Data Team • 09/17/2026

The vulnerability identified within the Linux kernel's KVM subsystem for s390 architecture involves an integer truncation issue during the handling of hardware breakpoint information, specifically within the __import_wp_info function. This flaw arises from a type mismatch between user-controlled input and internal data structures. The struct kvm_hw_breakpoint contains a field named len which is defined as a 64-bit unsigned integer (__u64). This value is directly influenced by userspace applications requesting hardware breakpoint configurations. When this length value is transferred to the wp_info structure, it is assigned to a member variable also named len but declared as a signed 32-bit integer (int).

The core technical flaw lies in how bounds checking and memory allocation are sequenced relative to this type conversion. The code performs a validation check on the truncated 32-bit value stored in wp_info->len, verifying that it is non-negative and does not exceed MAX_WP_SIZE. However, subsequent dynamic memory allocation utilizes bp_data->len, which retains its original full 64-bit width before truncation occurred during assignment to the int variable. This discrepancy means that if a userspace application provides a length value greater than four gigabytes but less than or equal to the maximum possible __u64 value, the truncated integer representation may appear valid under standard bounds checks because it wraps around or falls within acceptable positive ranges for signed 32-bit integers. Consequently, the allocation routine attempts to reserve memory based on the full untruncated size rather than the validated smaller size.

The operational impact of this vulnerability is primarily a denial of service condition affecting system stability and resource availability. When userspace triggers an allocation request with such a large length value, the kernel's memory allocator fails because the requested size exceeds MAX_PAGE_ORDER limits inherent to the page management subsystem. Instead of gracefully handling the error or rejecting the invalid input earlier in the process, the failure results in a warning message being logged via WARN_ON macros. While this does not typically lead to arbitrary code execution due to the nature of allocation failures returning null pointers rather than corrupting memory structures directly, it degrades system performance by generating excessive kernel logs and potentially consuming CPU cycles for error handling. In severe cases involving repeated attempts or specific timing conditions, such resource exhaustion could contribute to broader service disruptions on affected s390 systems running KVM virtualization.

Mitigation strategies focus on ensuring consistency between validation logic and subsequent operations that depend on the validated data. The primary fix involves modifying the allocation call to use wp_info->len instead of bp_data->len. By relying on the value that has already undergone truncation and bounds checking, the system ensures that only memory sizes deemed safe by the preceding conditional statements are requested from the kernel allocator. This aligns with CWE-190 regarding integer overflow or wraparound issues where improper handling of numeric types leads to unexpected behavior. Furthermore, this correction addresses aspects related to CWE-400 concerning uncontrolled resource consumption, as it prevents userspace from inducing excessive memory allocation attempts that strain system resources without achieving malicious objectives beyond denial of service.

From a threat modeling perspective aligned with the MITRE ATT&CK framework, this vulnerability can be categorized under techniques involving resource exhaustion or impact on availability rather than initial access or privilege escalation. Attackers leveraging this flaw would likely employ automated scripts to repeatedly send malformed breakpoint requests aimed at triggering allocation failures and kernel warnings. Defenders should prioritize applying patches that enforce strict type consistency in input validation pipelines across all KVM-related interfaces, particularly those handling hardware-assisted debugging features on s390 platforms. Regular auditing of code paths where user-supplied lengths are cast to smaller integer types before use is recommended to prevent similar truncation-based vulnerabilities from emerging in other subsystems.

Responsible

Linux

Reservation

09/11/2026

Disclosure

09/17/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!