[FFmpeg-devel] [PATCH 3/5] avutil/hwcontext_vulkan: Fix leaks when semaphore creation fails
Zhao Zhili
quinkblack at foxmail.com
Tue Feb 20 19:58:29 EET 2024
On 2024/2/21 01:10, Lynne wrote:
> Feb 20, 2024, 13:10 by quinkblack at foxmail.com:
>
>> From: Zhao Zhili <zhilizhao at tencent.com>
>>
>> ---
>> libavutil/hwcontext_vulkan.c | 30 +++++++++++++++++++-----------
>> 1 file changed, 19 insertions(+), 11 deletions(-)
>>
>> diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
>> index a84713e621..c64094f31c 100644
>> --- a/libavutil/hwcontext_vulkan.c
>> +++ b/libavutil/hwcontext_vulkan.c
>> @@ -1807,23 +1807,30 @@ static void vulkan_frame_free(AVHWFramesContext *hwfc, AVVkFrame *f)
>> VulkanDevicePriv *p = hwfc->device_ctx->internal->priv;
>> FFVulkanFunctions *vk = &p->vkctx.vkfn;
>> int nb_images = ff_vk_count_images(f);
>> + int nb_sems = 0;
>> +
>> + while (nb_sems < FF_ARRAY_ELEMS(f->sem) && f->sem[nb_sems])
>> + nb_sems++;
>> +
>> + if (nb_sems) {
>> + VkSemaphoreWaitInfo sem_wait = {
>> + .sType = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
>> + .flags = 0x0,
>> + .pSemaphores = f->sem,
>> + .pValues = f->sem_value,
>> + .semaphoreCount = nb_sems,
>> + };
>>
>> - VkSemaphoreWaitInfo sem_wait = {
>> - .sType = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
>> - .flags = 0x0,
>> - .pSemaphores = f->sem,
>> - .pValues = f->sem_value,
>> - .semaphoreCount = nb_images,
>> - };
>> -
>> - vk->WaitSemaphores(hwctx->act_dev, &sem_wait, UINT64_MAX);
>> + vk->WaitSemaphores(hwctx->act_dev, &sem_wait, UINT64_MAX);
>> + }
>>
>> vulkan_free_internal(f);
>>
>> for (int i = 0; i < nb_images; i++) {
>> vk->DestroyImage(hwctx->act_dev, f->img[i], hwctx->alloc);
>> vk->FreeMemory(hwctx->act_dev, f->mem[i], hwctx->alloc);
>> - vk->DestroySemaphore(hwctx->act_dev, f->sem[i], hwctx->alloc);
>> + if (f->sem[i])
>> + vk->DestroySemaphore(hwctx->act_dev, f->sem[i], hwctx->alloc);
>>
> vkDestroySemaphore should already check for NULL, though?
Yes, the check before vkDestroySemaphore can be removed. Will update the
patch.
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
More information about the ffmpeg-devel
mailing list