From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 44320A0093 for ; Thu, 28 May 2020 18:25:45 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 38B901DC18; Thu, 28 May 2020 18:25:45 +0200 (CEST) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by dpdk.org (Postfix) with ESMTP id E7CAD1DC18 for ; Thu, 28 May 2020 18:25:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1590683143; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JB6D7B77XjfgQ4LWr7bnwNQHNS0H0jrotouguVC14do=; b=OizzAyvrQyXdnX8DAyC25WTepZ4yF+Mf7eZeSy0Nlz40mjJjjsrHFMvp5iU03vrRFrxqVB kcsj0o1kT2u6+wTWE6hjFRREGh/eUBxhkP+X0FMiNYdMLPIVaR8c1qVY/ho3zuyuDoZWRI 9m2LfUNwq30RJ+QwXeiWayZM1Z9CZUE= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-7-c0y8BOqoPuCU0KeIB8GVdw-1; Thu, 28 May 2020 12:25:39 -0400 X-MC-Unique: c0y8BOqoPuCU0KeIB8GVdw-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 34FEF18FE86E; Thu, 28 May 2020 16:25:38 +0000 (UTC) Received: from rh.redhat.com (unknown [10.33.36.235]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1D6B260C87; Thu, 28 May 2020 16:25:36 +0000 (UTC) From: Kevin Traynor To: Igor Chauskin Cc: Michal Krawczyk , Guy Tzalik , dpdk stable Date: Thu, 28 May 2020 17:22:50 +0100 Message-Id: <20200528162322.7863-63-ktraynor@redhat.com> In-Reply-To: <20200528162322.7863-1-ktraynor@redhat.com> References: <20200528162322.7863-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/ena/base: make allocation macros thread-safe' has been queued to LTS release 18.11.9 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: , Errors-To: stable-bounces@dpdk.org Sender: "stable" 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 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 Reviewed-by: Michal Krawczyk Reviewed-by: Guy Tzalik --- 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@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 {