CVE Catalog

CVE-2026-63929

Low risk· EPSS 10%
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.20%

10th percentile - higher than 10% of all known CVEs

Summary

A memory leak was discovered in the Linux kernel's IIO (Industrial I/O) subsystem during DMA buffer enqueue. The iio_buffer_enqueue_dmabuf() function failed to release a reference to the struct iio_dma_fence object, causing a permanent leak of 104 bytes per enqueue operation.

Risk Assessment

The memory leak can exhaust available kernel memory, leading to system performance degradation and potentially causing a kernel panic or denial of service (DoS).

Recommendation

Immediately update the Linux kernel to a version containing the fix (commit 'iio: buffer: Fix DMA fence leak in iio_buffer_enqueue_dmabuf()'). If an update is not possible, restrict the use of IIO interfaces with DMA buffering.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: iio: buffer: Fix DMA fence leak in iio_buffer_enqueue_dmabuf() iio_buffer_enqueue_dmabuf() allocates a struct iio_dma_fence (104 bytes, kmalloc-128) via kmalloc_obj()+dma_fence_init(), which sets the initial kref to 1. It then calls dma_resv_add_fence() which takes a second reference (kref=2), and stores a raw pointer in block->fence. On the success path the function returns without calling dma_fence_put() to release the initial reference, so every buffer enqueue permanently leaks one kmalloc-128 allocation. The iio_buffer_cleanup() work item only releases the temporary reference taken during completion signalling by iio_buffer_signal_dmabuf_done(); the initial reference from dma_fence_init() is never released. With four iio_rwdev instances at 240kHz and 512 samples per buffer, this produces ~1875 kmalloc-128 allocations per second matching the observed slab growth exactly. A test with ftrace confirmed that the dma_fence_destroy event was never triggered. Fix by calling dma_fence_put() after dma_resv_add_fence(), transferring ownership of the fence to the DMA reservation object. The DMA fence then gets properly discarded after being signalled.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS