On Fri 14 Apr 2017, Jason Ekstrand wrote: > This cache allows us to easily ensure that we have a unique anv_bo for > each gem handle. We'll need this in order to support multiple-import of > memory objects and semaphores. > > v2 (Jason Ekstrand): > - Reject BO imports if the size doesn't match the prime fd size as > reported by lseek(). > --- > src/intel/vulkan/anv_allocator.c | 257 > +++++++++++++++++++++ > src/intel/vulkan/anv_private.h | 21 ++
> .../drivers/dri/i965/brw_nir_trig_workarounds.c | 191 +++++++++++++++ Hmm... nir trig workarounds. That's cool :) > 3 files changed, 469 insertions(+) > create mode 100644 src/mesa/drivers/dri/i965/brw_nir_trig_workarounds.c > +VkResult > +anv_bo_cache_init(struct anv_bo_cache *cache) > +{ > + cache->bo_map = _mesa_hash_table_create(NULL, _mesa_hash_pointer, > + _mesa_key_pointer_equal); > + if (!cache->bo_map) > + return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY); > + > + if (pthread_mutex_init(&cache->mutex, NULL)) { > + _mesa_hash_table_destroy(cache->bo_map, NULL); > + return vk_errorf(VK_ERROR_OUT_OF_HOST_MEMORY, > + "pthread_mutex_inti failed: %m"); Typo s/inti/init/ > + } > +static struct anv_bo * > +anv_bo_cache_lookup(struct anv_bo_cache *cache, uint32_t gem_handle) > +{ > + pthread_mutex_lock(&cache->mutex); > + > + struct anv_cached_bo *bo = anv_bo_cache_lookup_locked(cache, gem_handle); > + > + pthread_mutex_unlock(&cache->mutex); > + > + return &bo->bo; This correctly returns NULL when the lookup fails, but only by luck because offset(struct anv_cache_bo, bo) == 0. It should really be rewritten to avoid the dereference after lookup failures. > +} Fix those three issues, and this patch will be Reviewed-by: Chad Versace <chadvers...@chromium.org> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev