drm/i915: Assert mutex_is_locked on context lookup
authorBen Widawsky <ben@bwidawsk.net>
Wed, 24 Apr 2013 06:15:29 +0000 (23:15 -0700)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Mon, 6 May 2013 09:30:29 +0000 (11:30 +0200)
Because our context refcounting doesn't grab a ref at lookup time, it is
unsafe to do so without the lock.

NOTE: We don't have an easy way to put the assertion in the lookup
function which is where this really belongs. Context switching is good
enough because it actually asserts even more correctness by protecting
the default_context.

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
[danvet: s/BUG/WARN/]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem_context.c

index efa0ede5c6795411a99b8c8d8d50cbea531d980d..c81ae52c8c2eb433471b9c843e37044c9da088c5 100644 (file)
@@ -463,6 +463,8 @@ int i915_switch_context(struct intel_ring_buffer *ring,
        if (dev_priv->hw_contexts_disabled)
                return 0;
 
+       WARN_ON(!mutex_is_locked(&dev_priv->dev->struct_mutex));
+
        if (ring != &dev_priv->ring[RCS])
                return 0;