Module Name: src Committed By: riastradh Date: Wed Jan 15 13:53:09 UTC 2014
Modified Files: src/sys/external/bsd/drm2/dist/drm/i915 [riastradh-drm2]: i915_gem_context.c Log Message: Drop another reference in do_destroy if the context is current. To generate a diff of this commit: cvs rdiff -u -r1.1.1.1.2.3 -r1.1.1.1.2.4 \ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_context.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_context.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_context.c:1.1.1.1.2.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_context.c:1.1.1.1.2.4 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_context.c:1.1.1.1.2.3 Wed Jul 24 03:08:55 2013 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_context.c Wed Jan 15 13:53:09 2014 @@ -135,6 +135,13 @@ static void do_destroy(struct i915_hw_co else BUG_ON(ctx != dev_priv->ring[RCS].default_context); + /* + * If we are currently switched to this context, there's an + * extra reference to it, so drop that too. + */ + if (ctx->ring->last_context_obj == ctx->obj) + drm_gem_object_unreference(&ctx->obj->base); + drm_gem_object_unreference(&ctx->obj->base); kfree(ctx); }