From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 9C8301B45A for ; Thu, 31 Jan 2019 16:49:35 +0100 (CET) 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 mx1.redhat.com (Postfix) with ESMTPS id 016DE9387E; Thu, 31 Jan 2019 15:49:35 +0000 (UTC) Received: from ktraynor.remote.csb (ovpn-117-200.ams2.redhat.com [10.36.117.200]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5EAA15C207; Thu, 31 Jan 2019 15:49:33 +0000 (UTC) From: Kevin Traynor To: Fan Zhang Cc: Pablo de Lara , dpdk stable Date: Thu, 31 Jan 2019 15:48:11 +0000 Message-Id: <20190131154901.5383-3-ktraynor@redhat.com> In-Reply-To: <20190131154901.5383-1-ktraynor@redhat.com> References: <20190131154901.5383-1-ktraynor@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 31 Jan 2019 15:49:35 +0000 (UTC) Subject: [dpdk-stable] patch 'drivers/crypto: fix PMDs memory leak' has been queued to LTS release 18.11.1 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: , X-List-Received-Date: Thu, 31 Jan 2019 15:49:36 -0000 Hi, FYI, your patch has been queued to LTS release 18.11.1 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 02/07/19. 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. Thanks. Kevin Traynor --- >>From 335ec2a082b6e368354792fe2e13b58051a87f18 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Fri, 21 Dec 2018 14:11:05 +0000 Subject: [PATCH] drivers/crypto: fix PMDs memory leak [ upstream commit a4d69a5150e3597df170f595784b4f0472cd98c4 ] This patch fixes the memory leak during queue pair release. Originally the operation ring is not freed when releasing queue pair, causing the next queue_pair configure call fail and memory leak. Fixes: eec136f3c54f ("aesni_gcm: add driver for AES-GCM crypto operations") Fixes: cf7685d68f00 ("crypto/zuc: add driver for ZUC library") Fixes: d61f70b4c918 ("crypto/libcrypto: add driver for OpenSSL library") Fixes: 3aafc423cf4d ("snow3g: add driver for SNOW 3G library") Fixes: 94b0ad8e0aa5 ("null_crypto: add driver for null crypto operations") Signed-off-by: Fan Zhang Acked-by: Pablo de Lara --- drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c | 5 +++++ drivers/crypto/null/null_crypto_pmd_ops.c | 5 +++++ drivers/crypto/openssl/rte_openssl_pmd_ops.c | 5 +++++ drivers/crypto/snow3g/rte_snow3g_pmd_ops.c | 5 +++++ drivers/crypto/zuc/rte_zuc_pmd_ops.c | 5 +++++ 5 files changed, 25 insertions(+) diff --git a/drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c b/drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c index c343a393f..cd15245bd 100644 --- a/drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c +++ b/drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c @@ -154,4 +154,9 @@ aesni_gcm_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id) { if (dev->data->queue_pairs[qp_id] != NULL) { + struct aesni_gcm_qp *qp = dev->data->queue_pairs[qp_id]; + + if (qp->processed_pkts) + rte_ring_free(qp->processed_pkts); + rte_free(dev->data->queue_pairs[qp_id]); dev->data->queue_pairs[qp_id] = NULL; diff --git a/drivers/crypto/null/null_crypto_pmd_ops.c b/drivers/crypto/null/null_crypto_pmd_ops.c index 2bdcd019e..319ca34e7 100644 --- a/drivers/crypto/null/null_crypto_pmd_ops.c +++ b/drivers/crypto/null/null_crypto_pmd_ops.c @@ -134,4 +134,9 @@ null_crypto_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id) { if (dev->data->queue_pairs[qp_id] != NULL) { + struct null_crypto_qp *qp = dev->data->queue_pairs[qp_id]; + + if (qp->processed_pkts) + rte_ring_free(qp->processed_pkts); + rte_free(dev->data->queue_pairs[qp_id]); dev->data->queue_pairs[qp_id] = NULL; diff --git a/drivers/crypto/openssl/rte_openssl_pmd_ops.c b/drivers/crypto/openssl/rte_openssl_pmd_ops.c index c2b029ec2..a65f9e582 100644 --- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c +++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c @@ -658,4 +658,9 @@ openssl_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id) { if (dev->data->queue_pairs[qp_id] != NULL) { + struct openssl_qp *qp = dev->data->queue_pairs[qp_id]; + + if (qp->processed_ops) + rte_ring_free(qp->processed_ops); + rte_free(dev->data->queue_pairs[qp_id]); dev->data->queue_pairs[qp_id] = NULL; diff --git a/drivers/crypto/snow3g/rte_snow3g_pmd_ops.c b/drivers/crypto/snow3g/rte_snow3g_pmd_ops.c index cfbc9522a..a367ee9a0 100644 --- a/drivers/crypto/snow3g/rte_snow3g_pmd_ops.c +++ b/drivers/crypto/snow3g/rte_snow3g_pmd_ops.c @@ -143,4 +143,9 @@ snow3g_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id) { if (dev->data->queue_pairs[qp_id] != NULL) { + struct snow3g_qp *qp = dev->data->queue_pairs[qp_id]; + + if (qp->processed_ops) + rte_ring_free(qp->processed_ops); + rte_free(dev->data->queue_pairs[qp_id]); dev->data->queue_pairs[qp_id] = NULL; diff --git a/drivers/crypto/zuc/rte_zuc_pmd_ops.c b/drivers/crypto/zuc/rte_zuc_pmd_ops.c index 6da396542..04d45e449 100644 --- a/drivers/crypto/zuc/rte_zuc_pmd_ops.c +++ b/drivers/crypto/zuc/rte_zuc_pmd_ops.c @@ -143,4 +143,9 @@ zuc_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id) { if (dev->data->queue_pairs[qp_id] != NULL) { + struct zuc_qp *qp = dev->data->queue_pairs[qp_id]; + + if (qp->processed_ops) + rte_ring_free(qp->processed_ops); + rte_free(dev->data->queue_pairs[qp_id]); dev->data->queue_pairs[qp_id] = NULL; -- 2.19.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2019-01-31 15:44:05.823788173 +0000 +++ 0003-drivers-crypto-fix-PMDs-memory-leak.patch 2019-01-31 15:44:05.000000000 +0000 @@ -1,8 +1,10 @@ -From a4d69a5150e3597df170f595784b4f0472cd98c4 Mon Sep 17 00:00:00 2001 +From 335ec2a082b6e368354792fe2e13b58051a87f18 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Fri, 21 Dec 2018 14:11:05 +0000 Subject: [PATCH] drivers/crypto: fix PMDs memory leak +[ upstream commit a4d69a5150e3597df170f595784b4f0472cd98c4 ] + This patch fixes the memory leak during queue pair release. Originally the operation ring is not freed when releasing queue pair, causing the next queue_pair configure call fail @@ -13,7 +15,6 @@ Fixes: d61f70b4c918 ("crypto/libcrypto: add driver for OpenSSL library") Fixes: 3aafc423cf4d ("snow3g: add driver for SNOW 3G library") Fixes: 94b0ad8e0aa5 ("null_crypto: add driver for null crypto operations") -Cc: stable@dpdk.org Signed-off-by: Fan Zhang Acked-by: Pablo de Lara @@ -54,7 +55,7 @@ rte_free(dev->data->queue_pairs[qp_id]); dev->data->queue_pairs[qp_id] = NULL; diff --git a/drivers/crypto/openssl/rte_openssl_pmd_ops.c b/drivers/crypto/openssl/rte_openssl_pmd_ops.c -index bdaf937a3..d382476a6 100644 +index c2b029ec2..a65f9e582 100644 --- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c +++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c @@ -658,4 +658,9 @@ openssl_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id)