drm/i915/selftests: Lock the drm_mm as we search
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 28 Jan 2020 18:34:58 +0000 (18:34 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 28 Jan 2020 19:00:13 +0000 (19:00 +0000)
Hold onto the vm->mutex (to lock the drm_mm) to ensure that the rbtree
is stable as we search it for our scratch node.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200128183458.3860022-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c

index 130c4c5226863c3a1b94928c929b1fe6e8d361c7..375d864736f31bdff43c6923ab9bac92459db77d 100644 (file)
@@ -1465,9 +1465,12 @@ out_file:
 
 static int check_scratch(struct i915_address_space *vm, u64 offset)
 {
-       struct drm_mm_node *node =
-               __drm_mm_interval_first(&vm->mm,
-                                       offset, offset + sizeof(u32) - 1);
+       struct drm_mm_node *node;
+
+       mutex_lock(&vm->mutex);
+       node = __drm_mm_interval_first(&vm->mm,
+                                      offset, offset + sizeof(u32) - 1);
+       mutex_unlock(&vm->mutex);
        if (!node || node->start > offset)
                return 0;