[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