[Mesa-dev] [PATCH] i965: Don't try to unmap NULL program cache BO.

Lionel Landwerlin lionel.g.landwerlin at intel.com
Thu May 4 06:24:50 UTC 2017


Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>

On 03/05/17 19:46, Kenneth Graunke wrote:
> When running shader-db with intel_stub and recent Mesa, context creation
> fails when making a logical hardware context.  In this case, we call
> intelDestroyContext(), which gets here and tries to unmap the cache BO.
>
> But there isn't one - we haven't made it yet.  So we try to unmap a
> NULL pointer, which used to be safe (it did nothing), but crashes
> after commit 7c3b8ed87859bfdfb985d21685115a729f9cd138.
>
> The result is that we crash rather than failing context creation with
> a nice message.  Either way nothing works, but this is more polite.
> ---
>   src/mesa/drivers/dri/i965/brw_program_cache.c | 11 +++++++----
>   1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_program_cache.c b/src/mesa/drivers/dri/i965/brw_program_cache.c
> index c06ee23781c..b0e2962f88f 100644
> --- a/src/mesa/drivers/dri/i965/brw_program_cache.c
> +++ b/src/mesa/drivers/dri/i965/brw_program_cache.c
> @@ -485,10 +485,13 @@ brw_destroy_cache(struct brw_context *brw, struct brw_cache *cache)
>   
>      DBG("%s\n", __func__);
>   
> -   if (brw->has_llc)
> -      brw_bo_unmap(cache->bo);
> -   brw_bo_unreference(cache->bo);
> -   cache->bo = NULL;
> +   /* This can be NULL if context creation failed early on */
> +   if (cache->bo) {
> +      if (brw->has_llc)
> +         brw_bo_unmap(cache->bo);
> +      brw_bo_unreference(cache->bo);
> +      cache->bo = NULL;
> +   }
>      brw_clear_cache(brw, cache);
>      free(cache->items);
>      cache->items = NULL;




More information about the mesa-dev mailing list