From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 89405A04DD for ; Wed, 18 Nov 2020 17:38:16 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 21407C996; Wed, 18 Nov 2020 17:37:40 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by dpdk.org (Postfix) with ESMTP id 40F6BC98C for ; Wed, 18 Nov 2020 17:37:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605717456; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bi+mxwkkAFKI/fQ/ft3PVLnIZjhXhfn3FrNQOKQZhio=; b=RnWacH7uYhTTGkCtWmVoFwcLN9Nlkez3eAelZ6L4oYF/lkyQLvB8v+NObBV1Xkoc1w+ltG /nVZvbx7BFaeInyD/+fFI9jW/JZeSXkYmDtllWWEc12a4KSTaW10luh5/ZAkXCJNGtOJmx ZIvQxnEA3QR52OVoHn+n60NGIXTc4tQ= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-271-9wHMgLYuMLiJLq7PCVtheg-1; Wed, 18 Nov 2020 11:37:33 -0500 X-MC-Unique: 9wHMgLYuMLiJLq7PCVtheg-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 91F5FCEC61; Wed, 18 Nov 2020 16:37:32 +0000 (UTC) Received: from rh.redhat.com (ovpn-113-249.ams2.redhat.com [10.36.113.249]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6F56E5C1A3; Wed, 18 Nov 2020 16:37:31 +0000 (UTC) From: Kevin Traynor To: Yunjian Wang Cc: Nicolas Chautru , dpdk stable Date: Wed, 18 Nov 2020 16:35:31 +0000 Message-Id: <20201118163558.1101823-45-ktraynor@redhat.com> In-Reply-To: <20201118163558.1101823-1-ktraynor@redhat.com> References: <20201118163558.1101823-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ktraynor@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" Subject: [dpdk-stable] patch 'baseband/turbo_sw: fix memory leak in error path' has been queued to LTS release 18.11.11 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to LTS release 18.11.11 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/24/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable-queue This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable-queue/commit/3dd7e81837afae95b96a7efe8d430fffc49aaae2 Thanks. Kevin. --- >From 3dd7e81837afae95b96a7efe8d430fffc49aaae2 Mon Sep 17 00:00:00 2001 From: Yunjian Wang Date: Thu, 15 Oct 2020 21:45:45 +0800 Subject: [PATCH] baseband/turbo_sw: fix memory leak in error path [ upstream commit 240fb56cdb8a4d48359f83b2cb856410016b9207 ] In q_setup() allocated memory for the queue data, we should free it when error happens, otherwise it will lead to memory leak. Fixes: b8cfe2c9aed2 ("bb/turbo_sw: add software turbo driver") Signed-off-by: Yunjian Wang Reviewed-by: Nicolas Chautru --- .../baseband/turbo_sw/bbdev_turbo_software.c | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/drivers/baseband/turbo_sw/bbdev_turbo_software.c b/drivers/baseband/turbo_sw/bbdev_turbo_software.c index 8ceb2769f3..f07c823d4b 100644 --- a/drivers/baseband/turbo_sw/bbdev_turbo_software.c +++ b/drivers/baseband/turbo_sw/bbdev_turbo_software.c @@ -11,4 +11,5 @@ #include #include +#include #include @@ -234,5 +235,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, "Creating queue name for device %u queue %u failed", dev->data->dev_id, q_id); - return -ENAMETOOLONG; + ret = -ENAMETOOLONG; + goto free_q; } q->enc_out = rte_zmalloc_socket(name, @@ -243,4 +245,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, rte_bbdev_log(ERR, "Failed to allocate queue memory for %s", name); + ret = -ENOMEM; goto free_q; } @@ -254,5 +257,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, "Creating queue name for device %u queue %u failed", dev->data->dev_id, q_id); - return -ENAMETOOLONG; + ret = -ENAMETOOLONG; + goto free_q; } q->enc_in = rte_zmalloc_socket(name, @@ -262,4 +266,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, rte_bbdev_log(ERR, "Failed to allocate queue memory for %s", name); + ret = -ENOMEM; goto free_q; } @@ -272,5 +277,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, "Creating queue name for device %u queue %u failed", dev->data->dev_id, q_id); - return -ENAMETOOLONG; + ret = -ENAMETOOLONG; + goto free_q; } q->ag = rte_zmalloc_socket(name, @@ -280,4 +286,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, rte_bbdev_log(ERR, "Failed to allocate queue memory for %s", name); + ret = -ENOMEM; goto free_q; } @@ -290,5 +297,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, "Creating queue name for device %u queue %u failed", dev->data->dev_id, q_id); - return -ENAMETOOLONG; + ret = -ENAMETOOLONG; + goto free_q; } q->code_block = rte_zmalloc_socket(name, @@ -298,4 +306,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, rte_bbdev_log(ERR, "Failed to allocate queue memory for %s", name); + ret = -ENOMEM; goto free_q; } @@ -309,5 +318,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, "Creating queue name for device %u queue %u failed", dev->data->dev_id, q_id); - return -ENAMETOOLONG; + ret = -ENAMETOOLONG; + goto free_q; } q->deint_input = rte_zmalloc_socket(name, @@ -317,4 +327,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, rte_bbdev_log(ERR, "Failed to allocate queue memory for %s", name); + ret = -ENOMEM; goto free_q; } @@ -328,5 +339,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, "Creating queue name for device %u queue %u failed", dev->data->dev_id, q_id); - return -ENAMETOOLONG; + ret = -ENAMETOOLONG; + goto free_q; } q->deint_output = rte_zmalloc_socket(NULL, @@ -336,4 +348,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, rte_bbdev_log(ERR, "Failed to allocate queue memory for %s", name); + ret = -ENOMEM; goto free_q; } @@ -347,5 +360,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, "Creating queue name for device %u queue %u failed", dev->data->dev_id, q_id); - return -ENAMETOOLONG; + ret = -ENAMETOOLONG; + goto free_q; } q->adapter_output = rte_zmalloc_socket(NULL, @@ -355,4 +369,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, rte_bbdev_log(ERR, "Failed to allocate queue memory for %s", name); + ret = -ENOMEM; goto free_q; } @@ -365,5 +380,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, "Creating queue name for device %u queue %u failed", dev->data->dev_id, q_id); - return -ENAMETOOLONG; + ret = -ENAMETOOLONG; + goto free_q; } q->processed_pkts = rte_ring_create(name, queue_conf->queue_size, @@ -371,4 +387,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, if (q->processed_pkts == NULL) { rte_bbdev_log(ERR, "Failed to create ring for %s", name); + ret = -rte_errno; goto free_q; } @@ -390,5 +407,5 @@ free_q: rte_free(q->adapter_output); rte_free(q); - return -EFAULT; + return ret; } -- 2.26.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-11-18 16:33:38.779129935 +0000 +++ 0045-baseband-turbo_sw-fix-memory-leak-in-error-path.patch 2020-11-18 16:33:37.946215073 +0000 @@ -1 +1 @@ -From 240fb56cdb8a4d48359f83b2cb856410016b9207 Mon Sep 17 00:00:00 2001 +From 3dd7e81837afae95b96a7efe8d430fffc49aaae2 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 240fb56cdb8a4d48359f83b2cb856410016b9207 ] + @@ -10 +11,0 @@ -Cc: stable@dpdk.org @@ -19 +20 @@ -index a36099e91d..aa7f122382 100644 +index 8ceb2769f3..f07c823d4b 100644 @@ -28 +29 @@ -@@ -303,5 +304,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -234,5 +235,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -36 +37 @@ -@@ -312,4 +314,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -243,4 +245,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -42 +43 @@ -@@ -323,5 +326,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -254,5 +257,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -50 +51 @@ -@@ -331,4 +335,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -262,4 +266,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -56 +57 @@ -@@ -341,5 +346,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -272,5 +277,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -64 +65 @@ -@@ -349,4 +355,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -280,4 +286,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -70 +71 @@ -@@ -359,5 +366,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -290,5 +297,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -78 +79 @@ -@@ -367,4 +375,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -298,4 +306,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -84 +85 @@ -@@ -378,5 +387,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -309,5 +318,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -92 +93 @@ -@@ -386,4 +396,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -317,4 +327,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -98 +99 @@ -@@ -397,5 +408,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -328,5 +339,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -106 +107 @@ -@@ -405,4 +417,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -336,4 +348,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -112 +113 @@ -@@ -416,5 +429,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -347,5 +360,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -120 +121 @@ -@@ -424,4 +438,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -355,4 +369,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -126 +127 @@ -@@ -434,5 +449,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -365,5 +380,6 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -134 +135 @@ -@@ -440,4 +456,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, +@@ -371,4 +387,5 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id, @@ -140 +141 @@ -@@ -459,5 +476,5 @@ free_q: +@@ -390,5 +407,5 @@ free_q: