DragonFlyBSD Kernel Audit
DF-1672 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/radeon/cik_sdma.c b/sys/dev/drm/radeon/cik_sdma.c
--- a/sys/dev/drm/radeon/cik_sdma.c
+++ b/sys/dev/drm/radeon/cik_sdma.c
@@ -583,13 +583,13 @@
 	struct radeon_sync sync;
 	int ring_index = rdev->asic->copy.dma_ring_index;
 	struct radeon_ring *ring = &rdev->ring[ring_index];
-	u32 size_in_bytes, cur_size_in_bytes;
+	u64 size_in_bytes, cur_size_in_bytes;
 	int i, num_loops;
 	int r = 0;
 
 	radeon_sync_create(&sync);
 
-	size_in_bytes = (num_gpu_pages << RADEON_GPU_PAGE_SHIFT);
+	size_in_bytes = ((u64)num_gpu_pages << RADEON_GPU_PAGE_SHIFT);
 	num_loops = DIV_ROUND_UP(size_in_bytes, 0x1fffff);
 	r = radeon_ring_lock(rdev, ring, num_loops * 7 + 14);
 	if (r) {