]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Clear breadcrumb node when cancelling signaling
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 15 Nov 2017 12:14:58 +0000 (12:14 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 16 Nov 2017 14:17:08 +0000 (14:17 +0000)
commitde4c8c39df8804ba9098b653c1f00a4a7d1119f6
treec4a0af347740943d2cfad7042c893d8bc9ae26c1
parente94f5000d3a1a594f38f5d12b52422c1819be82e
drm/i915: Clear breadcrumb node when cancelling signaling

When we call intel_engine_cancel_signaling() to stop reporting when
a request is completed via an asynchronous signal, we remove that request
from the breadcrumb wait queue. However, we may be concurrently
processing that request in the signaler itself, the actual operations on
the request's node itself are serialised but we do not actually clear the
waiter after removing it from the tree allowing both parties to attempt
to do so and corrupting the rbtree. (Previously removing from the
breadcrumb wait queue could only be done on behalf of i915_wait_request,
so this race could not happen).

Reported-by: "He, Bo" <bo.he@intel.com>
Fixes: 53786aed69f9 ("drm/i915: Allow a request to be cancelled")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: "He, Bo" <bo.he@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: MichaƂ Winiarski <michal.winiarski@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171115121458.24655-1-chris@chris-wilson.co.uk
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
drivers/gpu/drm/i915/intel_breadcrumbs.c