From: Kenneth Graunke Date: Thu, 4 May 2017 02:24:32 +0000 (-0700) Subject: i965: Don't try to unmap NULL program cache BO. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bc074a45180eddf30ea723bbdf89895e2c7684ca;p=mesa.git i965: Don't try to unmap NULL program cache BO. 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. Cc: "17.1" Reviewed-by: Lionel Landwerlin --- 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;