Commit 42723673 authored by Chris Wilson's avatar Chris Wilson Committed by Rodrigo Vivi

drm/i915: Drop vm.ref for duplicate vma on construction

As we allow for parallel threads to create the same vma instance
concurrently, and we only filter out the duplicates upon reacquiring the
spinlock for the rbtree, we have to free the loser of the constructors'
race. When freeing, we should also drop any resource references acquired
for the redundant vma.

Fixes: 2850748e ("drm/i915: Pull i915_vma_pin under the vm->mutex")
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: <stable@vger.kernel.org> # v5.5+
Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200702083225.20044-1-chris@chris-wilson.co.uk
(cherry picked from commit 2377427c)
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent 9eb0463c
...@@ -198,6 +198,7 @@ vma_create(struct drm_i915_gem_object *obj, ...@@ -198,6 +198,7 @@ vma_create(struct drm_i915_gem_object *obj,
cmp = i915_vma_compare(pos, vm, view); cmp = i915_vma_compare(pos, vm, view);
if (cmp == 0) { if (cmp == 0) {
spin_unlock(&obj->vma.lock); spin_unlock(&obj->vma.lock);
i915_vm_put(vm);
i915_vma_free(vma); i915_vma_free(vma);
return pos; return pos;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment