[dpdk-stable] patch 'drivers/crypto: fix PMDs memory leak' has been queued to LTS release 18.11.1

Kevin Traynor ktraynor at redhat.com
Thu Jan 31 16:48:11 CET 2019


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 <roy.fan.zhang at intel.com>
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 <roy.fan.zhang at intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch at intel.com>
---
 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 <roy.fan.zhang at intel.com>
 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 at dpdk.org
 
 Signed-off-by: Fan Zhang <roy.fan.zhang at intel.com>
 Acked-by: Pablo de Lara <pablo.de.lara.guarch at intel.com>
@@ -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)


More information about the stable mailing list