From 8c2b9d152941f49d956bb2775a48158d1d10253b Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Mon, 7 Mar 2016 14:56:58 -0800 Subject: [PATCH] anv/bo_pool: Allow freeing BOs where the anv_bo is in the BO itself --- src/intel/vulkan/anv_allocator.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/intel/vulkan/anv_allocator.c b/src/intel/vulkan/anv_allocator.c index 3b62bda3e93..d7c09103344 100644 --- a/src/intel/vulkan/anv_allocator.c +++ b/src/intel/vulkan/anv_allocator.c @@ -853,11 +853,13 @@ anv_bo_pool_alloc(struct anv_bo_pool *pool, struct anv_bo *bo) } void -anv_bo_pool_free(struct anv_bo_pool *pool, const struct anv_bo *bo) +anv_bo_pool_free(struct anv_bo_pool *pool, const struct anv_bo *bo_in) { - struct bo_pool_bo_link *link = bo->map; - link->bo = *bo; + /* Make a copy in case the anv_bo happens to be storred in the BO */ + struct anv_bo bo = *bo_in; + struct bo_pool_bo_link *link = bo.map; + link->bo = bo; - VG(VALGRIND_MEMPOOL_FREE(pool, bo->map)); + VG(VALGRIND_MEMPOOL_FREE(pool, bo.map)); anv_ptr_free_list_push(&pool->free_list, link); } -- 2.30.2