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

2017-05-04 Thread Lionel Landwerlin

Reviewed-by: Lionel Landwerlin 

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;



___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


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

2017-05-03 Thread Kenneth Graunke
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;
-- 
2.12.2

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev