DragonFlyBSD Kernel Audit
DF-1484 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/amd/amdgpu/amdgpu_cs.c b/sys/dev/drm/amd/amdgpu/amdgpu_cs.c
--- a/sys/dev/drm/amd/amdgpu/amdgpu_cs.c
+++ b/sys/dev/drm/amd/amdgpu/amdgpu_cs.c
@@ -180,6 +180,11 @@
 
 		switch (p->chunks[i].chunk_id) {
 		case AMDGPU_CHUNK_ID_IB:
+			if (p->chunks[i].length_dw * sizeof(uint32_t) <
+			    sizeof(struct drm_amdgpu_cs_chunk_ib)) {
+				ret = -EINVAL;
+				goto free_partial_kdata;
+			}
 			++num_ibs;
 			break;