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 1F93CA0093 for ; Tue, 19 May 2020 15:08:52 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1775A1D633; Tue, 19 May 2020 15:08:52 +0200 (CEST) Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) by dpdk.org (Postfix) with ESMTP id BECE41D633 for ; Tue, 19 May 2020 15:08:51 +0200 (CEST) Received: by mail-wr1-f47.google.com with SMTP id k13so13755736wrx.3 for ; Tue, 19 May 2020 06:08:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=cCy13QH3kZvB/AquDasbYzZavjwO8rtdtAsDW5iuch8=; b=k8Auh7I/v8t1s5pnt8+a6cg6KJ9xTUoIIWl6/XqxtUr51hSff85B27vTG0uFrz6lRx /PrDAj2qdFoUcGjWYUwMiiT9uapHIa7amfVvGU4B7AwWQHAHsEl4s4wtGNRC+uSE3uB8 EbMQ4wtnVrV62HuQVukBe5Bjt1b7B8r6+ZPg2I6LiZm7BbBE+v7oCO0gTFqYOPzWBhEb P3DvQyRsiNFpU90zTfzxc5Dmp9V+aIGCU75U9s6WvHXp2Kla6IVd6dhZZ08bn7UKiYJc vQFGAG0bjEpGCQsv1TeIibREtxFHCvmYogP8fPVe+7liS8wt5o9AE6hznMNL7nRnlXmZ 4nIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cCy13QH3kZvB/AquDasbYzZavjwO8rtdtAsDW5iuch8=; b=FMZu8YVJ81H4Xntq7cVkHAmvBdUnRoANbAYQCzY+GMMu+Hl6Pq0TvCylQk6Kx24Rt9 +zbO3kZhW8bPGT1kEvgPMU6yJFh9v2UwD83fRFZw378txS9S92Hx0JlZ8SgM6Nn8jnTa TppFdlQOTeO1CF4P52ndGyrYwmGL34Ai7RrEl7IKqL2NSC4BCTGSbq50YbrI7RMrEV7Y U34LEvZ2tiTe7ARPYCDyj3jhCbexfqdWJ5IY7dp42cKcUpFDGatQvLSXrE6ROsG+Xht2 YfQ0FF/T0q017RbIpOz9zhphcXOdATZ225V6oWq6jugprvp2vYhBU935iqaynLpeWZ9d 2ekA== X-Gm-Message-State: AOAM531IIKByD64lAD9Wg7eTpoXbQ2knfwPsVM4x23uY9Gqt/8o1LuRW DZGTzwF1PiepspqzTv2VNBQ= X-Google-Smtp-Source: ABdhPJyjHVjlR/QywVn+p0qiv5vb+2KLM87M1/PbXd484yu5VTfx4j/BBm+b7n3xQo51MfhNDGRyvA== X-Received: by 2002:adf:fa92:: with SMTP id h18mr26077166wrr.260.1589893731503; Tue, 19 May 2020 06:08:51 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id w20sm3843917wmk.25.2020.05.19.06.08.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 06:08:51 -0700 (PDT) From: luca.boccassi@gmail.com To: Igor Chauskin Cc: Michal Krawczyk , Guy Tzalik , dpdk stable Date: Tue, 19 May 2020 14:03:11 +0100 Message-Id: <20200519130549.112823-56-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519130549.112823-1-luca.boccassi@gmail.com> References: <20200519125804.104349-1-luca.boccassi@gmail.com> <20200519130549.112823-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/ena/base: make allocation macros thread-safe' has been queued to stable release 19.11.3 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 stable release 19.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 05/21/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. Thanks. Luca Boccassi --- >From d5cfa58c057548ddee9aac3e1993905df10e4c88 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 | 10 ++++++---- drivers/net/ena/ena_ethdev.c | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/net/ena/base/ena_plat_dpdk.h b/drivers/net/ena/base/ena_plat_dpdk.h index 9e1492cac4..db9d1bb36b 100644 --- a/drivers/net/ena/base/ena_plat_dpdk.h +++ b/drivers/net/ena/base/ena_plat_dpdk.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates. + * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates. * All rights reserved. */ @@ -178,7 +178,7 @@ do { \ * Each rte_memzone should have unique name. * 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) \ do { \ @@ -186,7 +186,8 @@ extern uint32_t ena_alloc_cnt; char z_name[RTE_MEMZONE_NAMESIZE]; \ 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); \ handle = mz; \ @@ -211,7 +212,8 @@ extern uint32_t ena_alloc_cnt; char z_name[RTE_MEMZONE_NAMESIZE]; \ 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); \ mem_handle = mz; \ diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index 8bbd80dfb3..758d68d10b 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -89,7 +89,7 @@ struct ena_stats { * Each rte_memzone should have unique name. * 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[] = { ENA_STAT_GLOBAL_ENTRY(wd_expired), -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-05-19 14:04:46.794713641 +0100 +++ 0056-net-ena-base-make-allocation-macros-thread-safe.patch 2020-05-19 14:04:44.204648155 +0100 @@ -1,13 +1,14 @@ -From b14fcac035fd8514851c9140a4e26d765b61c532 Mon Sep 17 00:00:00 2001 +From d5cfa58c057548ddee9aac3e1993905df10e4c88 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") -Cc: stable@dpdk.org Signed-off-by: Igor Chauskin Reviewed-by: Michal Krawczyk @@ -18,7 +19,7 @@ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/net/ena/base/ena_plat_dpdk.h b/drivers/net/ena/base/ena_plat_dpdk.h -index b611fb204b..70261bdbc6 100644 +index 9e1492cac4..db9d1bb36b 100644 --- a/drivers/net/ena/base/ena_plat_dpdk.h +++ b/drivers/net/ena/base/ena_plat_dpdk.h @@ -1,5 +1,5 @@ @@ -28,7 +29,7 @@ * All rights reserved. */ -@@ -180,7 +180,7 @@ do { \ +@@ -178,7 +178,7 @@ do { \ * Each rte_memzone should have unique name. * To satisfy it, count number of allocations and add it to name. */ @@ -37,7 +38,7 @@ #define ENA_MEM_ALLOC_COHERENT(dmadev, size, virt, phys, handle) \ do { \ -@@ -188,7 +188,8 @@ extern uint32_t ena_alloc_cnt; +@@ -186,7 +186,8 @@ extern uint32_t ena_alloc_cnt; char z_name[RTE_MEMZONE_NAMESIZE]; \ ENA_TOUCH(dmadev); ENA_TOUCH(handle); \ snprintf(z_name, sizeof(z_name), \ @@ -47,7 +48,7 @@ mz = rte_memzone_reserve(z_name, size, SOCKET_ID_ANY, \ RTE_MEMZONE_IOVA_CONTIG); \ handle = mz; \ -@@ -213,7 +214,8 @@ extern uint32_t ena_alloc_cnt; +@@ -211,7 +212,8 @@ extern uint32_t ena_alloc_cnt; char z_name[RTE_MEMZONE_NAMESIZE]; \ ENA_TOUCH(dmadev); ENA_TOUCH(dev_node); \ snprintf(z_name, sizeof(z_name), \ @@ -58,7 +59,7 @@ RTE_MEMZONE_IOVA_CONTIG); \ mem_handle = mz; \ diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c -index 64aabbbb19..e0ed28419c 100644 +index 8bbd80dfb3..758d68d10b 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -89,7 +89,7 @@ struct ena_stats {