drm/i915: Call i915_sw_fence_fini on request cleanup
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 11 Apr 2019 12:24:45 +0000 (13:24 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 11 Apr 2019 19:48:51 +0000 (20:48 +0100)
As i915_requests are put into an RCU-freelist, they may get reused
before debugobjects notice them as being freed. On cleanup, explicitly
call i915_sw_fence_fini() so that the debugobject is properly tracked.

Reported-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Fixes: b7404c7ecb38 ("drm/i915: Bump ready tasks ahead of busywaits")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190411122445.20060-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_request.c

index a7d87cfaabcbe0ab4b5d85929ca5a85c3f47abe9..b836721d3b1304f226e3bd8a3b9a9d65901725be 100644 (file)
@@ -101,6 +101,7 @@ static void i915_fence_release(struct dma_fence *fence)
         * caught trying to reuse dead objects.
         */
        i915_sw_fence_fini(&rq->submit);
+       i915_sw_fence_fini(&rq->semaphore);
 
        kmem_cache_free(global.slab_requests, rq);
 }