[dpdk-stable] patch 'net/ena/base: make allocation macros thread-safe' has been queued to LTS release 18.11.9

Kevin Traynor ktraynor at redhat.com
Thu May 28 18:22:50 CEST 2020


Hi,

FYI, your patch has been queued to LTS release 18.11.9

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

Thanks.

Kevin.

---
>From 36e9c3f51fc36b1573c26f4a5094e8bd8eb41025 Mon Sep 17 00:00:00 2001
From: Igor Chauskin <igorch at amazon.com>
Date: Wed, 8 Apr 2020 10:28:53 +0200
Subject: [PATCH] net/ena/base: make allocation macros thread-safe

[ upstream commit b14fcac035fd8514851c9140a4e26d765b61c532 ]

Memory allocation region id could possibly be non-unique
due to non-atomic increment, causing allocation failure.

Fixes: 9ba7981ec992 ("ena: add communication layer for DPDK")

Signed-off-by: Igor Chauskin <igorch at amazon.com>
Reviewed-by: Michal Krawczyk <mk at semihalf.com>
Reviewed-by: Guy Tzalik <gtzalik at amazon.com>
---
 drivers/net/ena/base/ena_plat_dpdk.h | 44 ++++++----------------------
 drivers/net/ena/ena_ethdev.c         |  2 +-
 2 files changed, 10 insertions(+), 36 deletions(-)

diff --git a/drivers/net/ena/base/ena_plat_dpdk.h b/drivers/net/ena/base/ena_plat_dpdk.h
index 900ba1a6b0..1d30dbe2c6 100644
--- a/drivers/net/ena/base/ena_plat_dpdk.h
+++ b/drivers/net/ena/base/ena_plat_dpdk.h
@@ -1,34 +1,6 @@
-/*-
-* BSD LICENSE
-*
-* Copyright (c) 2015-2016 Amazon.com, Inc. or its affiliates.
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions
-* are met:
-*
-* * Redistributions of source code must retain the above copyright
-* notice, this list of conditions and the following disclaimer.
-* * Redistributions in binary form must reproduce the above copyright
-* notice, this list of conditions and the following disclaimer in
-* the documentation and/or other materials provided with the
-* distribution.
-* * Neither the name of copyright holder nor the names of its
-* contributors may be used to endorse or promote products derived
-* from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates.
+ * All rights reserved.
+ */
 
 #ifndef DPDK_ENA_COM_ENA_PLAT_DPDK_H_
@@ -202,5 +174,5 @@ do {                                                                   \
  * To satisfy it, count number of allocations and add it to name.
  */
-extern uint32_t ena_alloc_cnt;
+extern rte_atomic32_t ena_alloc_cnt;
 
 #define ENA_MEM_ALLOC_COHERENT(dmadev, size, virt, phys, handle)	\
@@ -210,5 +182,6 @@ extern uint32_t ena_alloc_cnt;
 		ENA_TOUCH(dmadev); ENA_TOUCH(handle);			\
 		snprintf(z_name, sizeof(z_name),			\
-				"ena_alloc_%d", ena_alloc_cnt++);	\
+			 "ena_alloc_%d",				\
+			 rte_atomic32_add_return(&ena_alloc_cnt, 1));	\
 		mz = rte_memzone_reserve(z_name, size, SOCKET_ID_ANY,	\
 				RTE_MEMZONE_IOVA_CONTIG);		\
@@ -235,5 +208,6 @@ extern uint32_t ena_alloc_cnt;
 		ENA_TOUCH(dmadev); ENA_TOUCH(dev_node);			\
 		snprintf(z_name, sizeof(z_name),			\
-				"ena_alloc_%d", ena_alloc_cnt++);	\
+			 "ena_alloc_%d",				\
+			 rte_atomic32_add_return(&ena_alloc_cnt, 1));	\
 		mz = rte_memzone_reserve(z_name, size, node,		\
 				RTE_MEMZONE_IOVA_CONTIG);		\
diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index 0779bb7713..493111a2a0 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -121,5 +121,5 @@ struct ena_stats {
  * To satisfy it, count number of allocation and add it to name.
  */
-uint32_t ena_alloc_cnt;
+rte_atomic32_t ena_alloc_cnt;
 
 static const struct ena_stats ena_stats_global_strings[] = {
-- 
2.21.3

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-05-28 17:13:02.365503625 +0100
+++ 0063-net-ena-base-make-allocation-macros-thread-safe.patch	2020-05-28 17:12:59.140555518 +0100
@@ -1 +1 @@
-From b14fcac035fd8514851c9140a4e26d765b61c532 Mon Sep 17 00:00:00 2001
+From 36e9c3f51fc36b1573c26f4a5094e8bd8eb41025 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit b14fcac035fd8514851c9140a4e26d765b61c532 ]
+
@@ -10 +11,0 @@
-Cc: stable at dpdk.org
@@ -16 +17 @@
- drivers/net/ena/base/ena_plat_dpdk.h | 10 ++++++----
+ drivers/net/ena/base/ena_plat_dpdk.h | 44 ++++++----------------------
@@ -18 +19 @@
- 2 files changed, 7 insertions(+), 5 deletions(-)
+ 2 files changed, 10 insertions(+), 36 deletions(-)
@@ -21 +22 @@
-index b611fb204b..70261bdbc6 100644
+index 900ba1a6b0..1d30dbe2c6 100644
@@ -24,3 +25,34 @@
-@@ -1,4 +1,4 @@
- /* SPDX-License-Identifier: BSD-3-Clause
-- * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates.
+@@ -1,34 +1,6 @@
+-/*-
+-* BSD LICENSE
+-*
+-* Copyright (c) 2015-2016 Amazon.com, Inc. or its affiliates.
+-* All rights reserved.
+-*
+-* Redistribution and use in source and binary forms, with or without
+-* modification, are permitted provided that the following conditions
+-* are met:
+-*
+-* * Redistributions of source code must retain the above copyright
+-* notice, this list of conditions and the following disclaimer.
+-* * Redistributions in binary form must reproduce the above copyright
+-* notice, this list of conditions and the following disclaimer in
+-* the documentation and/or other materials provided with the
+-* distribution.
+-* * Neither the name of copyright holder nor the names of its
+-* contributors may be used to endorse or promote products derived
+-* from this software without specific prior written permission.
+-*
+-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+-* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+-* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+-* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+-* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+-* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+-* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+-* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+-* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+-* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-*/
++/* SPDX-License-Identifier: BSD-3-Clause
@@ -28,3 +60,5 @@
-  * All rights reserved.
-  */
-@@ -181,5 +181,5 @@ do {                                                                   \
++ * All rights reserved.
++ */
+ 
+ #ifndef DPDK_ENA_COM_ENA_PLAT_DPDK_H_
+@@ -202,5 +174,5 @@ do {                                                                   \
@@ -37 +71 @@
-@@ -189,5 +189,6 @@ extern uint32_t ena_alloc_cnt;
+@@ -210,5 +182,6 @@ extern uint32_t ena_alloc_cnt;
@@ -45 +79 @@
-@@ -214,5 +215,6 @@ extern uint32_t ena_alloc_cnt;
+@@ -235,5 +208,6 @@ extern uint32_t ena_alloc_cnt;
@@ -54 +88 @@
-index 64aabbbb19..e0ed28419c 100644
+index 0779bb7713..493111a2a0 100644
@@ -57 +91 @@
-@@ -90,5 +90,5 @@ struct ena_stats {
+@@ -121,5 +121,5 @@ struct ena_stats {



More information about the stable mailing list