aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2020-07-02 09:32:03 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2020-07-02 13:48:00 +0100
commit2377427cdd2b7514eb4c40241cf5c4dec63c1bec (patch)
treefa892b062e82caaeb00f67ded123fd2c6b06ceaf
parentdrm/i915/gt: Move the heartbeat into the high priority system wq (diff)
downloadlinux-dev-2377427cdd2b7514eb4c40241cf5c4dec63c1bec.tar.xz
linux-dev-2377427cdd2b7514eb4c40241cf5c4dec63c1bec.zip
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: 2850748ef876 ("drm/i915: Pull i915_vma_pin under the vm->mutex") Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: <stable@vger.kernel.org> # v5.5+ Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200702083225.20044-1-chris@chris-wilson.co.uk
-rw-r--r--drivers/gpu/drm/i915/i915_vma.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index 1f63c4a1f055..7fe1f317cd2b 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -198,6 +198,7 @@ vma_create(struct drm_i915_gem_object *obj,
cmp = i915_vma_compare(pos, vm, view);
if (cmp == 0) {
spin_unlock(&obj->vma.lock);
+ i915_vm_put(vm);
i915_vma_free(vma);
return pos;
}