Description
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 products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
eba57fb5498f2858768321e64570caea188455b8 to < 898bd0ccfed71651b881660c5d20ad73b5203174affectedeba57fb5498f2858768321e64570caea188455b8 to < 73524e9f96a278b521f257a78a845c49eb522bc1affectedeba57fb5498f2858768321e64570caea188455b8 to < 8348567a6afb24e2c9cafe8a321162d0eebe1411affectedeba57fb5498f2858768321e64570caea188455b8 to < c0fffc874c264292e769f26194a2a5e66ce31810affectedeba57fb5498f2858768321e64570caea188455b8 to < 3f26bb732cc136ab20176697c92f32c9c84cb125affected
Linux Linux
Default version status: affected
6.5affected0 to < 6.5unaffected6.6.143 to ≤ 6.6.*unaffected6.12.94 to ≤ 6.12.*unaffected6.18.36 to ≤ 6.18.*unaffected7.0.13 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
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 ↗