[Intel-gfx] [PATCH] drm/i915: Sanity check inputs to i915_gem_evict_for_node()

Chris Wilson chris at chris-wilson.co.uk
Fri Feb 3 18:08:28 UTC 2017


Assert that the node is correctly aligned and that we are within the
bounds of the VM.

Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
---
 drivers/gpu/drm/i915/i915_gem_evict.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_gem_evict.c b/drivers/gpu/drm/i915/i915_gem_evict.c
index c181b1bb3d2c..e3f9d377c8c9 100644
--- a/drivers/gpu/drm/i915/i915_gem_evict.c
+++ b/drivers/gpu/drm/i915/i915_gem_evict.c
@@ -258,6 +258,9 @@ int i915_gem_evict_for_node(struct i915_address_space *vm,
 	int ret = 0;
 
 	lockdep_assert_held(&vm->i915->drm.struct_mutex);
+	GEM_BUG_ON(!IS_ALIGNED(start, I915_GTT_PAGE_SIZE));
+	GEM_BUG_ON(!IS_ALIGNED(end, I915_GTT_PAGE_SIZE));
+
 	trace_i915_gem_evict_node(vm, target, flags);
 
 	/* Retire before we search the active list. Although we have
@@ -276,8 +279,13 @@ int i915_gem_evict_for_node(struct i915_address_space *vm,
 		if (end < vm->start + vm->total)
 			end += I915_GTT_PAGE_SIZE;
 	}
+	GEM_BUG_ON(start < vm->start);
+	GEM_BUG_ON(end > vm->start + vm->total);
+	GEM_BUG_ON(start >= end);
 
 	drm_mm_for_each_node_in_range(node, &vm->mm, start, end) {
+		GEM_BUG_ON(!node->allocated);
+
 		/* If we find any non-objects (!vma), we cannot evict them */
 		if (node->color == I915_COLOR_UNEVICTABLE) {
 			ret = -ENOSPC;
-- 
2.11.0



More information about the Intel-gfx mailing list