[Intel-gfx] [PATCH] drm/i915: Free resources correctly if we cannot map status page during ctx create

Daniel Vetter daniel at ffwll.ch
Mon Nov 17 20:04:09 CET 2014


On Mon, Nov 17, 2014 at 03:48:27PM +0000, Arun Siluvery wrote:
> We are not freeing memory allocated for ringbuf and ctx if we fail
> to map status page so release all resources correctly.
> 
> Signed-off-by: Arun Siluvery <arun.siluvery at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_lrc.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index f3efdbd..a84d24b 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -1777,8 +1777,10 @@ int intel_lr_context_deferred_create(struct intel_context *ctx,
>  		ring->status_page.gfx_addr = i915_gem_obj_ggtt_offset(ctx_obj);
>  		ring->status_page.page_addr =
>  				kmap(sg_page(ctx_obj->pages->sgl));
> -		if (ring->status_page.page_addr == NULL)
> -			return -ENOMEM;
> +		if (ring->status_page.page_addr == NULL) {
> +			ret = -ENOMEM;
> +			goto error;
> +		}

Since this popped up: Do we have an automated igt testcase to exercise
this corner-case?

We do have it for legacy (gen6/7) contexts, including exercising the
shrinker logic to get rid of misplaced ctx objects to avoid ggtt
fragmentation hassles ...
-Daniel

>  		ring->status_page.obj = ctx_obj;
>  	}
>  
> -- 
> 2.1.2
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list