anv: fix use after free

Once mem->bo is removed from the cache, it is likely to be freed.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: b80930a6fe ("anv: add support for VK_EXT_memory_budget")
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
This commit is contained in:
Lionel Landwerlin 2019-05-08 11:39:09 +01:00
parent a07d06f103
commit 43596e5f34

View file

@ -2995,6 +2995,9 @@ void anv_FreeMemory(
if (mem->map) if (mem->map)
anv_UnmapMemory(_device, _mem); anv_UnmapMemory(_device, _mem);
p_atomic_add(&pdevice->memory.heaps[mem->type->heapIndex].used,
-mem->bo->size);
anv_bo_cache_release(device, &device->bo_cache, mem->bo); anv_bo_cache_release(device, &device->bo_cache, mem->bo);
#if defined(ANDROID) && ANDROID_API_LEVEL >= 26 #if defined(ANDROID) && ANDROID_API_LEVEL >= 26
@ -3002,9 +3005,6 @@ void anv_FreeMemory(
AHardwareBuffer_release(mem->ahw); AHardwareBuffer_release(mem->ahw);
#endif #endif
p_atomic_add(&pdevice->memory.heaps[mem->type->heapIndex].used,
-mem->bo->size);
vk_free2(&device->alloc, pAllocator, mem); vk_free2(&device->alloc, pAllocator, mem);
} }