iio: buffer: Fix DMA fence leak in iio_buffer_enqueue_dmabuf()
Summary
| CVE | CVE-2026-63929 |
|---|---|
| State | PUBLISHED |
| Assigner | Linux |
| Source Priority | CVE Program / NVD first with legacy fallback |
| Published | 2026-07-19 16:17:11 UTC |
| Updated | 2026-07-19 16:17:11 UTC |
| Description | 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. |
Risk And Classification
EPSS: 0.002000000 probability, percentile 0.100170000 (date 2026-07-20)
Vendor Declared Affected Products
| Source | Vendor | Product | Version | Platforms |
|---|---|---|---|---|
| CNA | Linux | Linux | affected 3e26d9f08fbe0b73e951a5e810fdb7a332b7e37f 9678aeed8b77d495a417dd057d479f3733094019 git | Not specified |
| CNA | Linux | Linux | affected 3e26d9f08fbe0b73e951a5e810fdb7a332b7e37f 3412a95afaa5d3262008dfc34f3c7be33d8151dc git | Not specified |
| CNA | Linux | Linux | affected 3e26d9f08fbe0b73e951a5e810fdb7a332b7e37f 96cdeaba6a008503455b78a9641c05c2a886a7ec git | Not specified |
| CNA | Linux | Linux | affected 3e26d9f08fbe0b73e951a5e810fdb7a332b7e37f a093999355084bdbfe6e97f1dd232e58a1525f0b git | Not specified |
| CNA | Linux | Linux | affected 6.11 | Not specified |
| CNA | Linux | Linux | unaffected 6.11 semver | Not specified |
| CNA | Linux | Linux | unaffected 6.12.93 6.12.* semver | Not specified |
| CNA | Linux | Linux | unaffected 6.18.35 6.18.* semver | Not specified |
| CNA | Linux | Linux | unaffected 7.0.12 7.0.* semver | Not specified |
| CNA | Linux | Linux | unaffected 7.1 * original_commit_for_fix | Not specified |
References
| Reference | Source | Link | Tags |
|---|---|---|---|
| git.kernel.org/stable/c/96cdeaba6a008503455b78a9641c05c2a886a7ec | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/a093999355084bdbfe6e97f1dd232e58a1525f0b | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/3412a95afaa5d3262008dfc34f3c7be33d8151dc | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| git.kernel.org/stable/c/9678aeed8b77d495a417dd057d479f3733094019 | 416baaa9-dc9f-4396-8d5f-8c081fb06d67 | git.kernel.org | |
| CVE Program record | CVE.ORG | www.cve.org | canonical |
| NVD vulnerability detail | NVD | nvd.nist.gov | canonical, analysis |
No vendor comments have been submitted for this CVE.
There are currently no legacy QID mappings associated with this CVE.