[Intel-gfx] [PATCH] drm/i915: Fix context object leak for legacy contexts

John Harrison John.C.Harrison at Intel.com
Tue Nov 25 11:49:49 CET 2014


Looks good to me.

Reviewed-by: John Harrison<John.C.Harrison at Intel.com>


On 25/11/2014 10:39, Thomas Daniel wrote:
> Dynamic context pinning for LRCs introduced a leak in legacy mode.
> Reinstate context unreference in i915_gem_free_request for legacy contexts.
>
> Leak reported by i-g-t/drv_module_reload fixed by this patch.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86507
> Signed-off-by: Thomas Daniel <thomas.daniel at intel.com>
> ---
>   drivers/gpu/drm/i915/i915_gem.c |   10 ++++++----
>   1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 614bc2b..c630d49 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -2574,11 +2574,13 @@ static void i915_gem_free_request(struct drm_i915_gem_request *request)
>   	list_del(&request->list);
>   	i915_gem_request_remove_from_client(request);
>   
> -	if (i915.enable_execlists && ctx) {
> -		struct intel_engine_cs *ring = request->ring;
> +	if (ctx) {
> +		if (i915.enable_execlists) {
> +			struct intel_engine_cs *ring = request->ring;
>   
> -		if (ctx != ring->default_context)
> -			intel_lr_context_unpin(ring, ctx);
> +			if (ctx != ring->default_context)
> +				intel_lr_context_unpin(ring, ctx);
> +		}
>   		i915_gem_context_unreference(ctx);
>   	}
>   	kfree(request);




More information about the Intel-gfx mailing list