⬢ DragonFlyBSD Kernel Audit
DF-3769 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/drm/i915/i915_gem_gtt.c b/sys/dev/drm/i915/i915_gem_gtt.c
--- a/sys/dev/drm/i915/i915_gem_gtt.c
+++ b/sys/dev/drm/i915/i915_gem_gtt.c
@@ -1071,8 +1071,9 @@ gen8_ppgtt_insert_pte_entries(struct i915_hw_ppgtt *ppgtt,
 			idx->pde = 0;
 
 			/* Limited by sg length for 3lvl */
-			if (++idx->pdpe == GEN8_PML4ES_PER_PML4) {
+			++idx->pdpe;
+			if (GEM_WARN_ON(idx->pdpe >= i915_pdpes_per_pdp(&ppgtt->vm)) ||
+			    idx->pdpe == GEN8_PML4ES_PER_PML4) {
 				idx->pdpe = 0;
 				ret = true;
 				break;
 			}
 
-			GEM_BUG_ON(idx->pdpe >= i915_pdpes_per_pdp(&ppgtt->vm));
 			pd = pdp->page_directory[idx->pdpe];