⬢ DragonFlyBSD Kernel Audit
DF-4870 / fix.diff
← back to finding ↓ download raw
--- 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;