DF-4265 / fix.diff
--- a/sys/dev/drm/amd/amdgpu/amdgpu_cs.c +++ b/sys/dev/drm/amd/amdgpu/amdgpu_cs.c @@ -1513,15 +1513,22 @@ continue; r = dma_fence_wait_timeout(fence, true, timeout); - dma_fence_put(fence); - if (r < 0) + if (r < 0) { + dma_fence_put(fence); return r; + } - if (r == 0) + if (r == 0) { + dma_fence_put(fence); break; + } if (fence->error) - return fence->error; + r = fence->error; + + dma_fence_put(fence); + if (r < 0) + return r; } memset(wait, 0, sizeof(*wait)); |