Description
In the Linux kernel, the following vulnerability has been resolved: dma-fence: Make dma_fence_dedup_array() robust against 0-count input dma_fence_dedup_array() returns 1 when called with num_fences == 0: the for-loop body never executes, j stays at 0, and the final `return ++j` yields 1. This contradicts both the kernel-doc ("Return: Number of unique fences remaining in the array") and the natural expectation that 0 input gives 0 output. The caller __dma_fence_unwrap_merge() bails out via the `if (count == 0 || count == 1)` fast path and so is save. But amdgpu_userq_wait_*() could reach the dedup call with a zero local count and dereference an uninitialized fence slot in the array. Make the contract match the documentation by returning 0 early. This also skips an unnecessary sort() call on an empty array.
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
575ec9b0c2f11f40535ea737ed5a64792780d1ef to < 7aa8f3dba53422465dbe1be8dbb7240304462bb2affected575ec9b0c2f11f40535ea737ed5a64792780d1ef to < e2d9a2ea178a5da0b4a6693e8ebca5c7fc4d7051affected575ec9b0c2f11f40535ea737ed5a64792780d1ef to < 77a9298741f8f9e8b963c977f5582ab21c6d3427affected
Linux Linux
Default version status: affected
6.16affected0 to < 6.16unaffected6.18.40 to ≤ 6.18.*unaffected7.1.5 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected