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

sunvdc: unmap LDC cookies when the descriptor send fails

__send_request() maps the request's pages into the LDC channel's map
table (ldc_map_sg()), fills in the descriptor and marks it
VIO_DESC_READY before ringing the doorbell via __vdc_tx_trigger().
When the trigger fails, the error path only prints a message: the
descriptor stays READY and the cookies are never unmapped. The
mapping is normally released in vdc_end_one() when the peer completes
the descriptor - but a descriptor whose doorbell was never sent will
never complete, and since dr->prod is not advanced on failure, the
reset path (vdc_requeue_inflight(), which walks [cons, prod)) never
visits it either. The map table entries are leaked permanently.

Since commit a11f6ca9aef9 ("sunvdc: Do not spin in an infinite loop
when vio_ldc_send() returns EAGAIN") trigger failures occur in
practice under load, so every resulting I/O error also leaks one
request's worth of entries from the fixed-size (8192 entries per
channel) map table. Because the allocator hands out contiguous
ranges, fragmentation makes large multi-segment requests fail first
as the table drains, until ldc_map_sg() fails permanently and the
disk is dead until reboot.

It also makes any retry-based recovery unusable: requeuing the
request on -EAGAIN remaps the pages on every attempt, overwriting
desc->cookies and orphaning the previous mapping, so the table
drains at the retry rate. This is the memory exhaustion observed
when the requeue approach was first tested in October 2025.

Roll back on failure: unmap the cookies, mark the descriptor FREE
again and clear the request entry. If the trigger failed with
-ENOTCONN, __vdc_tx_trigger() has already reset the port, which
tears down and reallocates both the dring and the LDC channel
including its map table - nothing to roll back, and the stale
descriptor must not be touched.
Published: 2026-09-25
Score: n/a
EPSS: n/a
KEV: No
Impact: Memory Exhaustion Denial of Service
Action: Patch Kernel
AI Analysis

Impact

On Linux systems the kernel’s LDC channel maps request pages into a fixed‐size table. When a trigger fails, the descriptor remains marked ready and its cookies are never unmapped, leaking the entry permanently. Repeated failures under load reduce the 8192‑entry table until it empties, forcing the device to become unusable until a reboot. The leak also defeats retry‑based recovery, causing rapid memory exhaustion as descriptors are remapped on every retry. The impact is a systemic denial of service due to kernel memory exhaustion and lost I/O capability.

Affected Systems

The flaw affects all Linux kernel builds that include the sunvdc subsystem prior to the fix (not tied to a specific released version in the advisory). Any distribution using those kernels is potentially vulnerable unless the patched source code is in use.

Risk and Exploitability

No CVSS score is provided and EPSS is unavailable, indicating that exploit data is limited. The vulnerability requires the attacker to trigger repeated I/O failures, which is likely a local or privileged attack vector inferred from the kernel context. Although no exploits are listed and the vulnerability is not in the CISA KEV catalog, the high memory‑exhaustion risk and permanent corruption make it a significant threat when triggered.

Generated by OpenCVE AI on September 25, 2026 at 14:50 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the latest kernel update that includes the commit correcting the mapping leak.
  • If an immediate update is not possible, reboot the system to release the stale descriptors and free the map table.
  • Temporarily disable or limit sunvdc activity under high load until the patch is applied.
  • Continuously monitor kernel memory usage and system logs for signs of descriptor leaks or I/O errors.

Generated by OpenCVE AI on September 25, 2026 at 14:50 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 25 Sep 2026 15:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-247
CWE-668

Fri, 25 Sep 2026 10:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: sunvdc: unmap LDC cookies when the descriptor send fails __send_request() maps the request's pages into the LDC channel's map table (ldc_map_sg()), fills in the descriptor and marks it VIO_DESC_READY before ringing the doorbell via __vdc_tx_trigger(). When the trigger fails, the error path only prints a message: the descriptor stays READY and the cookies are never unmapped. The mapping is normally released in vdc_end_one() when the peer completes the descriptor - but a descriptor whose doorbell was never sent will never complete, and since dr->prod is not advanced on failure, the reset path (vdc_requeue_inflight(), which walks [cons, prod)) never visits it either. The map table entries are leaked permanently. Since commit a11f6ca9aef9 ("sunvdc: Do not spin in an infinite loop when vio_ldc_send() returns EAGAIN") trigger failures occur in practice under load, so every resulting I/O error also leaks one request's worth of entries from the fixed-size (8192 entries per channel) map table. Because the allocator hands out contiguous ranges, fragmentation makes large multi-segment requests fail first as the table drains, until ldc_map_sg() fails permanently and the disk is dead until reboot. It also makes any retry-based recovery unusable: requeuing the request on -EAGAIN remaps the pages on every attempt, overwriting desc->cookies and orphaning the previous mapping, so the table drains at the retry rate. This is the memory exhaustion observed when the requeue approach was first tested in October 2025. Roll back on failure: unmap the cookies, mark the descriptor FREE again and clear the request entry. If the trigger failed with -ENOTCONN, __vdc_tx_trigger() has already reset the port, which tears down and reallocates both the dring and the LDC channel including its map table - nothing to roll back, and the stale descriptor must not be touched.
Title sunvdc: unmap LDC cookies when the descriptor send fails
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-25T10:23:00.161Z

Reserved: 2026-09-25T10:18:58.205Z

Link: CVE-2026-97952

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-25T11:17:22.790

Modified: 2026-09-25T11:17:22.790

Link: CVE-2026-97952

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-25T15:00:20Z

Weaknesses
  • CWE-247

    DEPRECATED: Reliance on DNS Lookups in a Security Decision

  • CWE-668

    Exposure of Resource to Wrong Sphere