DF-4870 / fix.diff
--- a/sys/dev/drm/radeon/r600_dma.c +++ b/sys/dev/drm/radeon/r600_dma.c @@ -366,11 +366,15 @@ int r600_dma_ib_test(struct radeon_device *rdev, r = radeon_ib_schedule(rdev, &ib, NULL, false); if (r) { radeon_ib_free(rdev, &ib); DRM_ERROR("radeon: failed to schedule ib (%d).\n", r); return r; } r = radeon_fence_wait_timeout(ib.fence, false, usecs_to_jiffies( RADEON_USEC_IB_TEST_TIMEOUT)); if (r < 0) { DRM_ERROR("radeon: fence wait failed (%d).\n", r); + radeon_ib_free(rdev, &ib); return r; } else if (r == 0) { DRM_ERROR("radeon: fence wait timed out.\n"); + radeon_ib_free(rdev, &ib); return -ETIMEDOUT; } r = 0; |