From patchwork Wed Mar 24 07:39:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Fu, Ting" X-Patchwork-Id: 26594 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 01DD3449F23 for ; Wed, 24 Mar 2021 09:48:11 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DA58D68AB18; Wed, 24 Mar 2021 09:48:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 151BB68807E for ; Wed, 24 Mar 2021 09:48:03 +0200 (EET) IronPort-SDR: EIciSH3YRw3Wy2JOfBZJdKN3dwFYvcWD1gVqVmzweR1m9SZd3PvMGmCL8S9TczG1ya7C26koVn X+UrcIYVyxtg== X-IronPort-AV: E=McAfee;i="6000,8403,9932"; a="170623039" X-IronPort-AV: E=Sophos;i="5.81,274,1610438400"; d="scan'208";a="170623039" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Mar 2021 00:47:57 -0700 IronPort-SDR: 4e5AG8xrN5aLLwgU5Rc+yIf8VaOFmyFVHzhJ2b6xeUzRL8wcQlRzFNeAU4XIbS9HkwI5FI5Edk 3iva0n1Kr/sg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,274,1610438400"; d="scan'208";a="415367825" Received: from semmer-ubuntu.sh.intel.com ([10.239.159.83]) by orsmga008.jf.intel.com with ESMTP; 24 Mar 2021 00:47:56 -0700 From: Ting Fu To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Mar 2021 15:39:28 +0800 Message-Id: <20210324073928.3570-3-ting.fu@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210324073928.3570-1-ting.fu@intel.com> References: <20210324073928.3570-1-ting.fu@intel.com> Subject: [FFmpeg-devel] [PATCH 3/3] lavfi/dnn_backend_tensorflow.c: fix mem leak in execute_model_tf X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Ting Fu --- libavfilter/dnn/dnn_backend_tf.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavfilter/dnn/dnn_backend_tf.c b/libavfilter/dnn/dnn_backend_tf.c index c18cb4063f..c0aa510630 100644 --- a/libavfilter/dnn/dnn_backend_tf.c +++ b/libavfilter/dnn/dnn_backend_tf.c @@ -766,18 +766,21 @@ static DNNReturnType execute_model_tf(const DNNModel *model, const char *input_n if (nb_output != 1) { // currently, the filter does not need multiple outputs, // so we just pending the support until we really need it. + TF_DeleteTensor(input_tensor); avpriv_report_missing_feature(ctx, "multiple outputs"); return DNN_ERROR; } tf_outputs = av_malloc_array(nb_output, sizeof(*tf_outputs)); if (tf_outputs == NULL) { + TF_DeleteTensor(input_tensor); av_log(ctx, AV_LOG_ERROR, "Failed to allocate memory for *tf_outputs\n"); \ return DNN_ERROR; } output_tensors = av_mallocz_array(nb_output, sizeof(*output_tensors)); if (!output_tensors) { + TF_DeleteTensor(input_tensor); av_freep(&tf_outputs); av_log(ctx, AV_LOG_ERROR, "Failed to allocate memory for output tensor\n"); \ return DNN_ERROR; @@ -786,6 +789,7 @@ static DNNReturnType execute_model_tf(const DNNModel *model, const char *input_n for (int i = 0; i < nb_output; ++i) { tf_outputs[i].oper = TF_GraphOperationByName(tf_model->graph, output_names[i]); if (!tf_outputs[i].oper) { + TF_DeleteTensor(input_tensor); av_freep(&tf_outputs); av_freep(&output_tensors); av_log(ctx, AV_LOG_ERROR, "Could not find output \"%s\" in model\n", output_names[i]); \ @@ -799,6 +803,7 @@ static DNNReturnType execute_model_tf(const DNNModel *model, const char *input_n tf_outputs, output_tensors, nb_output, NULL, 0, NULL, tf_model->status); if (TF_GetCode(tf_model->status) != TF_OK) { + TF_DeleteTensor(input_tensor); av_freep(&tf_outputs); av_freep(&output_tensors); av_log(ctx, AV_LOG_ERROR, "Failed to run session when executing model\n");