drm/i915/gem: Free the fence after a fence-chain lookup failure
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 6 Aug 2020 16:10:56 +0000 (17:10 +0100)
committerJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Mon, 7 Sep 2020 11:28:21 +0000 (14:28 +0300)
If dma_fence_chain_find_seqno() reports an error, it does so in its
preamble before it disposes of the input fence. On handling the
error, we need to drop the reference to the fence.

Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2292
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 13149e8bafc4 ("drm/i915: add syncobj timeline support")
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200806161056.17593-1-chris@chris-wilson.co.uk
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c

index 9ce114d..24a1486 100644 (file)
@@ -2289,6 +2289,7 @@ add_timeline_fence_array(struct i915_execbuffer *eb,
 
                if (err && !(user_fence.flags & I915_EXEC_FENCE_SIGNAL)) {
                        DRM_DEBUG("Syncobj handle missing requested point %llu\n", point);
+                       dma_fence_put(fence);
                        drm_syncobj_put(syncobj);
                        return err;
                }