patch 'vdpa/mlx5: fix leak on event thread creation' has been queued to stable release 21.11.2

luca.boccassi at gmail.com luca.boccassi at gmail.com
Tue Jul 12 21:23:45 CEST 2022


Hi,

FYI, your patch has been queued to stable release 21.11.2

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/14/22. 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

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/dbe68f09585c4f671abb49f6ceee451a12b47c30

Thanks.

Luca Boccassi

---
>From dbe68f09585c4f671abb49f6ceee451a12b47c30 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand at redhat.com>
Date: Mon, 20 Jun 2022 15:10:44 +0200
Subject: [PATCH] vdpa/mlx5: fix leak on event thread creation

[ upstream commit ea2810fc215dbf748afdaa0e65df50427d2bc058 ]

As stated in the manual, pthread_attr_init return value should be
checked.
Besides, a pthread_attr_t should be destroyed once unused.

In practice, we may have no leak (from what I read in glibc current code),
but this may change in the future.
Stick to a correct use of the API.

Fixes: 5cf3fd3af4df ("vdpa/mlx5: add CPU core parameter to bind polling thread")

Signed-off-by: David Marchand <david.marchand at redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>
Acked-by: Matan Azrad <matan at nvidia.com>
---
 drivers/vdpa/mlx5/mlx5_vdpa_event.c | 30 +++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/drivers/vdpa/mlx5/mlx5_vdpa_event.c b/drivers/vdpa/mlx5/mlx5_vdpa_event.c
index f8d910b33f..ecad139768 100644
--- a/drivers/vdpa/mlx5/mlx5_vdpa_event.c
+++ b/drivers/vdpa/mlx5/mlx5_vdpa_event.c
@@ -460,6 +460,7 @@ mlx5_vdpa_cqe_event_setup(struct mlx5_vdpa_priv *priv)
 {
 	int ret;
 	rte_cpuset_t cpuset;
+	pthread_attr_t *attrp = NULL;
 	pthread_attr_t attr;
 	char name[16];
 	const struct sched_param sp = {
@@ -469,22 +470,27 @@ mlx5_vdpa_cqe_event_setup(struct mlx5_vdpa_priv *priv)
 	if (!priv->eventc)
 		/* All virtqs are in poll mode. */
 		return 0;
-	pthread_attr_init(&attr);
-	ret = pthread_attr_setschedpolicy(&attr, SCHED_RR);
+	ret = pthread_attr_init(&attr);
+	if (ret != 0) {
+		DRV_LOG(ERR, "Failed to initialize thread attributes");
+		goto out;
+	}
+	attrp = &attr;
+	ret = pthread_attr_setschedpolicy(attrp, SCHED_RR);
 	if (ret) {
 		DRV_LOG(ERR, "Failed to set thread sched policy = RR.");
-		return -1;
+		goto out;
 	}
-	ret = pthread_attr_setschedparam(&attr, &sp);
+	ret = pthread_attr_setschedparam(attrp, &sp);
 	if (ret) {
 		DRV_LOG(ERR, "Failed to set thread priority.");
-		return -1;
+		goto out;
 	}
-	ret = pthread_create(&priv->timer_tid, &attr, mlx5_vdpa_event_handle,
+	ret = pthread_create(&priv->timer_tid, attrp, mlx5_vdpa_event_handle,
 			     (void *)priv);
 	if (ret) {
 		DRV_LOG(ERR, "Failed to create timer thread.");
-		return -1;
+		goto out;
 	}
 	CPU_ZERO(&cpuset);
 	if (priv->event_core != -1)
@@ -494,12 +500,16 @@ mlx5_vdpa_cqe_event_setup(struct mlx5_vdpa_priv *priv)
 	ret = pthread_setaffinity_np(priv->timer_tid, sizeof(cpuset), &cpuset);
 	if (ret) {
 		DRV_LOG(ERR, "Failed to set thread affinity.");
-		return -1;
+		goto out;
 	}
 	snprintf(name, sizeof(name), "vDPA-mlx5-%d", priv->vid);
-	ret = rte_thread_setname(priv->timer_tid, name);
-	if (ret)
+	if (rte_thread_setname(priv->timer_tid, name) != 0)
 		DRV_LOG(DEBUG, "Cannot set timer thread name.");
+out:
+	if (attrp != NULL)
+		pthread_attr_destroy(attrp);
+	if (ret != 0)
+		return -1;
 	return 0;
 }
 
-- 
2.34.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-07-12 20:22:33.785142009 +0100
+++ 0002-vdpa-mlx5-fix-leak-on-event-thread-creation.patch	2022-07-12 20:22:33.709247162 +0100
@@ -1 +1 @@
-From ea2810fc215dbf748afdaa0e65df50427d2bc058 Mon Sep 17 00:00:00 2001
+From dbe68f09585c4f671abb49f6ceee451a12b47c30 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit ea2810fc215dbf748afdaa0e65df50427d2bc058 ]
+
@@ -15 +16,0 @@
-Cc: stable at dpdk.org
@@ -25 +26 @@
-index 22f0920c88..4d819763d8 100644
+index f8d910b33f..ecad139768 100644
@@ -28 +29 @@
-@@ -504,6 +504,7 @@ mlx5_vdpa_cqe_event_setup(struct mlx5_vdpa_priv *priv)
+@@ -460,6 +460,7 @@ mlx5_vdpa_cqe_event_setup(struct mlx5_vdpa_priv *priv)
@@ -36 +37 @@
-@@ -513,22 +514,27 @@ mlx5_vdpa_cqe_event_setup(struct mlx5_vdpa_priv *priv)
+@@ -469,22 +470,27 @@ mlx5_vdpa_cqe_event_setup(struct mlx5_vdpa_priv *priv)
@@ -71 +72 @@
-@@ -538,12 +544,16 @@ mlx5_vdpa_cqe_event_setup(struct mlx5_vdpa_priv *priv)
+@@ -494,12 +500,16 @@ mlx5_vdpa_cqe_event_setup(struct mlx5_vdpa_priv *priv)


More information about the stable mailing list