CVE-2026-45981
Analyzed Analyzed - Analysis Complete
Linux Kernel Device Lifecycle Handling Flaw

Publication date: 2026-05-27

Last updated on: 2026-06-16

Assigner: kernel.org

Description
In the Linux kernel, the following vulnerability has been resolved: s390/cio: Fix device lifecycle handling in css_alloc_subchannel() `css_alloc_subchannel()` calls `device_initialize()` before setting up the DMA masks. If `dma_set_coherent_mask()` or `dma_set_mask()` fails, the error path frees the subchannel structure directly, bypassing the device model reference counting. Once `device_initialize()` has been called, the embedded struct device must be released via `put_device()`, allowing the release callback to free the container structure. Fix the error path by dropping the initial device reference with `put_device()` instead of calling `kfree()` directly. This ensures correct device lifetime handling and avoids potential use-after-free or double-free issues.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-05-27
Last Modified
2026-06-16
Generated
2026-06-16
AI Q&A
2026-05-27
EPSS Evaluated
2026-06-15
NVD
EUVD
Affected Vendors & Products
Showing 4 associated CPEs
Vendor Product Version / Range
linux linux_kernel From 6.13 (inc) to 6.18.14 (exc)
linux linux_kernel From 6.19 (inc) to 6.19.4 (exc)
linux linux_kernel From 6.7 (inc) to 6.12.75 (exc)
linux linux_kernel From 3.10 (inc) to 6.6.128 (exc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-401 The product does not sufficiently track and release allocated memory after it has been used, making the memory unavailable for reallocation and reuse.
Attack-Flow Graph
AI Quick Actions
Instant insights powered by AI
Executive Summary

This vulnerability exists in the Linux kernel's s390 architecture code, specifically in the function css_alloc_subchannel(). The function calls device_initialize() before setting up DMA masks. If setting the DMA masks fails, the error handling code incorrectly frees the subchannel structure directly using kfree(), bypassing the proper device model reference counting.

Because device_initialize() has been called, the embedded device structure must be released using put_device() to properly decrement the reference count and trigger the release callback that frees the container structure. The incorrect error path leads to improper device lifetime handling, which can cause use-after-free or double-free issues.

Impact Analysis

This vulnerability can lead to memory management errors such as use-after-free or double-free conditions in the Linux kernel. Such errors may cause system instability, crashes, or potentially allow an attacker to execute arbitrary code or escalate privileges by exploiting the improper handling of device lifecycles.

Mitigation Strategies

The vulnerability has been resolved by fixing the device lifecycle handling in the Linux kernel's s390/cio subsystem. To mitigate this vulnerability, you should update your Linux kernel to a version that includes the fix for CVE-2026-45981.

Specifically, ensure your kernel includes the patch that changes the error path in css_alloc_subchannel() to call put_device() instead of kfree(), which properly manages device references and prevents use-after-free or double-free issues.

Chat Assistant
Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-45981. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70
EPSS Chart