From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id B9AF94984D for ; Tue, 20 Feb 2024 12:09:57 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9606168D1C1; Tue, 20 Feb 2024 14:09:35 +0200 (EET) Received: from out203-205-251-36.mail.qq.com (out203-205-251-36.mail.qq.com [203.205.251.36]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1840B68D09E for ; Tue, 20 Feb 2024 14:09:33 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1708430966; bh=53L3+rIGLLn0VkPWgExcH61MgB9tZapYqg9loGVM/CE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=aRvFuBz1mJShdWeAiT4mjrX4cjJ0shF6onqnaDhTk6aVLloRhPNx40EHOw4rw0EZj tbVTSO1Eb3slWeOUocTmUcSVVlvG2NgDV2kFckhoUZLITDmGDKCGdwu6vxAZTeR6cw j4yZ52/U1db7CB5v3g9JjKBPnAcdHQfhibJ+mckg= Received: from localhost.localdomain ([113.116.31.63]) by newxmesmtplogicsvrszc5-0.qq.com (NewEsmtp) with SMTP id 2413D432; Tue, 20 Feb 2024 20:09:01 +0800 X-QQ-mid: xmsmtpt1708430942t8bsvzjyf Message-ID: X-QQ-XMAILINFO: MFdGPHhuqhNo0U/b5FZDBdLBY2ZN+/mAUtfTwZgKgBDhrMu0BiGEn3rNEznWk5 gv7wrKo4IXAQGMLvYFj09w85TJY3iWeeKhxjfPSG58Nna8kl/8e5NW9SqdIHY5mVu4yMkTIjr5AP wdKRqnDN6DWe2MxRW+ucl0fgcpuxpXQKxRBZJpuh4JjaEtgjKEjuRDrkuX75YX3oHCDbcnaDzGfV oXs5rUItW8nFvcAQcGpd97UkvH/onEB5ZVKhqFHYakJyWP/hS9rJFmc/JEH3u5BY9P0s5CbjoyWx 8CFXm7gZ112fFHJkcH+AAQzpMPzACgJmT2gMOG1a2qG5Vtp33bWtWYx54gR5azLETFjZTmLOyGef Cr9hcmK99wrCeLGIisDU4eMHp/N8z8EzH3TLKGSOM8+buBzQ0CO8AbUFnigJHoaDJRUoBxQQEJWw UhdtDE8ViSdpnWoX43WyNtO8drkU3mOZ6yAb+TvNCowfpOD6wQL3e5Zk9W0A3JzIlhG4NAcB5kV4 6esHU1q9eLQOUMsqvC953hgd3WSdfDLISPZmlbnA7/ZDlGvWPE0mNXiq9yyqo0PbOnWi4K9J1C+o NZ3/r0mUHwYN7rUADYlMP8a3QHsWaTFFWvPSjT62+Tsag1EDXBFRNXQh91GRy9969KKZnZbiRuR9 PnGxDi4YQdViEbzW2nWRi1PUoB/2xmAM6S7jcgcw/CdFJZIitI4dvUYEl6ha3Yioiv0r3y24roMx VjATdIN/pT7rb6acAH5mjNoP9L59bXOIsL1XC/StDmF+YBv7Pg1zi/NxPH8JAtOGxSQkh2GBv342 a/Px5Kg2w9VnU0SO5mei5x0xdOxC/AEUjeKTh41BnvahaGqIYI+a7tsE2j7NTEHl6/fQTiyiXGTE k/5Y/i2Z39X105fDnr0xv4jVdwFBkojA9bi2MCCQ+NHc2FME0V5OR0wTRlv2j5QMBIGGxxzZv5VE NKLCNT2Rg8+yk1bd5JKRX/s+6DdxS8JwGmcMV3GFiunyjxYCWtS4Rq5I5mpb94 X-QQ-XMRINFO: NI4Ajvh11aEj8Xl/2s1/T8w= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Tue, 20 Feb 2024 20:08:56 +0800 X-OQ-MSGID: <20240220120858.317766-3-quinkblack@foxmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240220120858.317766-1-quinkblack@foxmail.com> References: <20240220120858.317766-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/5] avutil/hwcontext_vulkan: Fix leaks when semaphore creation fails X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Zhao Zhili Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Zhao Zhili --- 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); } av_free(f); @@ -2098,7 +2105,8 @@ static int create_frame(AVHWFramesContext *hwfc, AVVkFrame **frame, if (ret != VK_SUCCESS) { av_log(hwctx, AV_LOG_ERROR, "Failed to create semaphore: %s\n", ff_vk_ret2str(ret)); - return AVERROR_EXTERNAL; + err = AVERROR_EXTERNAL; + goto fail; } f->queue_family[i] = p->nb_img_qfs > 1 ? VK_QUEUE_FAMILY_IGNORED : p->img_qfs[0]; -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".