From 88b539c4a03e3d680c297b60cc7a58a9e05fa0d6 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Fri, 3 Mar 2017 10:57:17 +0100 Subject: anv: do not try to ref/unref NULL shaders This situation can happen if we failed to allocate memory for the shader. v2: - We shouldn't see NULL shaders in anv_shader_bin_ref so we should not check for that (Jason). Make sure that callers don't attempt to call this function with a NULL shader and assert that this never happens (Iago). v3: - All callers to anv_shader_bin_unref seem to check for NULL before calling, so just assert that it is not NULL (Topi) Reviewed-by: Topi Pohjolainen --- src/intel/vulkan/anv_pipeline_cache.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/intel/vulkan/anv_pipeline_cache.c') diff --git a/src/intel/vulkan/anv_pipeline_cache.c b/src/intel/vulkan/anv_pipeline_cache.c index 0b677a49f3d..cdd8215b9b5 100644 --- a/src/intel/vulkan/anv_pipeline_cache.c +++ b/src/intel/vulkan/anv_pipeline_cache.c @@ -308,7 +308,8 @@ anv_pipeline_cache_upload_kernel(struct anv_pipeline_cache *cache, pthread_mutex_unlock(&cache->mutex); /* We increment refcount before handing it to the caller */ - anv_shader_bin_ref(bin); + if (bin) + anv_shader_bin_ref(bin); return bin; } else { @@ -546,6 +547,8 @@ VkResult anv_MergePipelineCaches( struct hash_entry *entry; hash_table_foreach(src->cache, entry) { struct anv_shader_bin *bin = entry->data; + assert(bin); + if (_mesa_hash_table_search(dst->cache, bin->key)) continue; -- cgit v1.2.3