patch 'malloc: fix multi-process wait condition handling' has been queued to stable release 23.11.2

Xueming Li xuemingl at nvidia.com
Mon Aug 12 14:50:20 CEST 2024


Hi,

FYI, your patch has been queued to stable release 23.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 08/14/24. 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://git.dpdk.org/dpdk-stable/log/?h=23.11-staging

This queued commit can be viewed at:
https://git.dpdk.org/dpdk-stable/commit/?h=23.11-staging&id=971d455e59e6b9d225e56722f1e48e5fecb98765
coverity's

Thanks.

Xueming Li <xuemingl at nvidia.com>

---
>From 971d455e59e6b9d225e56722f1e48e5fecb98765 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov at intel.com>
Date: Fri, 12 Jul 2024 12:41:35 +0100
Subject: [PATCH] malloc: fix multi-process wait condition handling
Cc: Xueming Li <xuemingl at nvidia.com>

[ upstream commit 429219adab185909a8127e680d19f7628af62fb2 ]

>From coverity's point of view, it is theoretically possible to have an
infinite wait on a wait condition because while we do check for timeout,
we do not check for whether the event we are waiting for has already
occurred by the time we get to the first cond_wait call (in this case,
it's state of memory request list entry's state being set to COMPLETE).

This can't really happen as the only time a wait condition is triggered
is when we are receiving a memory event (so the entry we are waiting on
cannot change before wait condition is triggered because it's protected
by a mutex), so either we receive an event and modify entry state, or we
exit wait on a timeout and do not care about request state. However, it's
better to keep coverity happy.

Coverity issue: 425709
Fixes: 07dcbfe0101f ("malloc: support multiprocess memory hotplug")

Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
---
 lib/eal/common/malloc_mp.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/eal/common/malloc_mp.c b/lib/eal/common/malloc_mp.c
index 4d62397aba..a704eb01d1 100644
--- a/lib/eal/common/malloc_mp.c
+++ b/lib/eal/common/malloc_mp.c
@@ -756,7 +756,8 @@ request_to_primary(struct malloc_mp_req *user_req)
 	do {
 		ret = pthread_cond_timedwait(&entry->cond,
 				&mp_request_list.lock, &ts);
-	} while (ret != 0 && ret != ETIMEDOUT);
+	} while ((ret != 0 && ret != ETIMEDOUT) &&
+			entry->state == REQ_STATE_ACTIVE);
 
 	if (entry->state != REQ_STATE_COMPLETE) {
 		RTE_LOG(ERR, EAL, "Request timed out\n");
-- 
2.34.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2024-08-12 20:44:07.047283139 +0800
+++ 0143-malloc-fix-multi-process-wait-condition-handling.patch	2024-08-12 20:44:02.555069385 +0800
@@ -1 +1 @@
-From 429219adab185909a8127e680d19f7628af62fb2 Mon Sep 17 00:00:00 2001
+From 971d455e59e6b9d225e56722f1e48e5fecb98765 Mon Sep 17 00:00:00 2001
@@ -4,0 +5,3 @@
+Cc: Xueming Li <xuemingl at nvidia.com>
+
+[ upstream commit 429219adab185909a8127e680d19f7628af62fb2 ]
@@ -21 +23,0 @@
-Cc: stable at dpdk.org
@@ -29 +31 @@
-index 2d39b0716f..9765277f5d 100644
+index 4d62397aba..a704eb01d1 100644
@@ -41 +43 @@
- 		EAL_LOG(ERR, "Request timed out");
+ 		RTE_LOG(ERR, EAL, "Request timed out\n");


More information about the stable mailing list