radv: fix AHB leak upon exportable allocation

A successful AHardwareBuffer_allocate itself will increase a refcount on
the newly allocated AHB. For the import case, the implementation must
acquire a reference on the AHB. So if we layer the exportable allocation
on top of AHB allocation and AHB import, we must release an AHB
reference to avoid leak.

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10940>
This commit is contained in:
Yiwei Zhang 2021-05-22 03:32:09 +00:00 committed by Marge Bot
parent 2797c75426
commit c8e90a022e

View file

@ -807,8 +807,10 @@ radv_create_ahb_memory(struct radv_device *device, struct radv_device_memory *me
};
VkResult result = radv_import_ahb_memory(device, mem, priority, &import_info);
if (result != VK_SUCCESS)
AHardwareBuffer_release(mem->android_hardware_buffer);
/* Release a reference to avoid leak for AHB allocation. */
AHardwareBuffer_release(mem->android_hardware_buffer);
return result;
#else /* RADV_SUPPORT_ANDROID_HARDWARE_BUFFER */
return VK_ERROR_EXTENSION_NOT_PRESENT;