mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
drm/i915/gem: Keep request alive while attaching fences
Since commite5dadff4b0
("drm/i915: Protect request retirement with timeline->mutex"), the request retirement can happen outside of the struct_mutex serialised only by the timeline->mutex. We drop the timeline->mutex on submitting the request (i915_request_add) so after that point, it is liable to be freed. Make sure our local reference is kept alive until we have finished attaching it to the signalers. (Note that this erodes the argument that i915_request_add should consume the reference, but that is a slightly larger patch!) Fixes:e5dadff4b0
("drm/i915: Protect request retirement with timeline->mutex") Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Matthew Auld <matthew.auld@intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20191217134729.3297818-1-chris@chris-wilson.co.uk
This commit is contained in:
parent
b694131102
commit
e14177f197
1 changed files with 2 additions and 0 deletions
|
@ -2730,6 +2730,7 @@ i915_gem_do_execbuffer(struct drm_device *dev,
|
|||
err = eb_submit(&eb);
|
||||
err_request:
|
||||
add_to_client(eb.request, file);
|
||||
i915_request_get(eb.request);
|
||||
i915_request_add(eb.request);
|
||||
|
||||
if (fences)
|
||||
|
@ -2745,6 +2746,7 @@ err_request:
|
|||
fput(out_fence->file);
|
||||
}
|
||||
}
|
||||
i915_request_put(eb.request);
|
||||
|
||||
err_batch_unpin:
|
||||
if (eb.batch_flags & I915_DISPATCH_SECURE)
|
||||
|
|
Loading…
Add table
Reference in a new issue