Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: drm/virtio: fix dma_fence refcount leak on error in virtio_gpu_dma_fence_wait() dma_fence_unwrap_for_each() internally calls dma_fence_unwrap_first() which does cursor->chain = dma_fence_get(head), taking an extra reference. On normal loop completion, dma_fence_unwrap_next() releases this via dma_fence_chain_walk() -> dma_fence_put(). When virtio_gpu_do_fence_wait() fails and the function returns early from inside the loop, the cursor->chain reference is never released. This is the only caller in the entire kernel that does an early return inside dma_fence_unwrap_for_each. Add dma_fence_put(itr.chain) before the early return.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected eba57fb5498f2858768321e64570caea188455b8 before 898bd0ccfed71651b881660c5d20ad73b5203174; affected eba57fb5498f2858768321e64570caea188455b8 before 73524e9f96a278b521f257a78a845c49eb522bc1; affected eba57fb5498f2858768321e64570caea188455b8 before 8348567a6afb24e2c9cafe8a321162d0eebe1411; affected eba57fb5498f2858768321e64570caea188455b8 before c0fffc874c264292e769f26194a2a5e66ce31810; affected eba57fb5498f2858768321e64570caea188455b8 before 3f26bb732cc136ab20176697c92f32c9c84cb125 |
| Linux / Linux | affected 6.5; unaffected 0 before 6.5; unaffected 6.6.143 through 6.6.*; unaffected 6.12.94 through 6.12.*; unaffected 6.18.36 through 6.18.*; unaffected 7.0.13 through 7.0.*; unaffected 7.1 through * |
CWE
No CWE identifiers supplied.
References
- https://git.kernel.org/stable/c/898bd0ccfed71651b881660c5d20ad73b5203174
- https://git.kernel.org/stable/c/73524e9f96a278b521f257a78a845c49eb522bc1
- https://git.kernel.org/stable/c/8348567a6afb24e2c9cafe8a321162d0eebe1411
- https://git.kernel.org/stable/c/c0fffc874c264292e769f26194a2a5e66ce31810
- https://git.kernel.org/stable/c/3f26bb732cc136ab20176697c92f32c9c84cb125