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 593ABA0589; Fri, 27 Mar 2020 11:29:31 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C98761C0B2; Fri, 27 Mar 2020 11:29:16 +0100 (CET) Received: from mail-lf1-f67.google.com (mail-lf1-f67.google.com [209.85.167.67]) by dpdk.org (Postfix) with ESMTP id 2547A1C07D for ; Fri, 27 Mar 2020 11:29:13 +0100 (CET) Received: by mail-lf1-f67.google.com with SMTP id x200so250556lff.0 for ; Fri, 27 Mar 2020 03:29:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ICA0f/rv2hWQhgRjJy3CwEjffjIxOgG4Dk8l0SUlyfc=; b=u2ZCrT97gvYIVY9zRdOAzn1/6SNST9awP7Iy1skbIBzyTxrJgtOE0x108nYeo9pKzB pGmfq6umVlhXfh62yupbtb3KdHjMTGVipGiZsNmbn+buN7iBfYPA8nKcohnh7xuAr6ZK b019WoU1vAFR1dL1/MGcgzzPrddg9S9l9HQ7SoJ52bPFNJpazXp1xTkupnacUb3xXmCz pNn7leUx4pnH6kfZepdQFGi7bpsp1DTuWgjALq1FBj+CotGng309eYTZojcq6XTqh3kM EvDgXc7EtH5s9kM0MoaLGmflaY1M3L0J9TsFyA5X/FPgtjZgsUa24pehS1mxREoykmDU YsJA== 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=ICA0f/rv2hWQhgRjJy3CwEjffjIxOgG4Dk8l0SUlyfc=; b=eu1ALen/TLLdFrTShC43ys1oJSo+LQ4bc1m0+WoyK3Zppq+xrFnB8pzxAETMcog+wn ywDf4+lExn3mGhT0BZVwnYJuaY+Jjh9t36hqKY82OYK772Bb9x/QADazpgQ1G5bcRh0n GN+uiU8A1K9XVCWCP809GMZw90YvLTU6Nqqif+D713Ks6KnEH6QbqP0ow+EW0nvMKsOQ XO8j7Xp352YOyC1tdiecq8nBZAi09/lxqXzhhQIxmXFHCKDDdzp0ZyXMARTQb+7Hn9jL Yn21JdceTltpAK6D9b+cMYjUx5luQBus818AtnxmzjbgV/0ELjyjDkUzJrE8WwJXRTs/ mpbw== X-Gm-Message-State: ANhLgQ0vfZRKRKbb2rjqL7/8vuNaEex6IYt1NoEbE9PpHZ4vyhEv5BPx p234qwqtD/rCPgfWOcHEY039yDMfQYo= X-Google-Smtp-Source: ADFU+vttr+HyjN9zbnaPE49H3gP6TsxZleUBHw8MGUxzZWv3Ft/XNwE0zd8MQN0FEYYhCCdAi0js4g== X-Received: by 2002:a19:1d6:: with SMTP id 205mr8744959lfb.80.1585304952419; Fri, 27 Mar 2020 03:29:12 -0700 (PDT) Received: from localhost.localdomain (193-106-246-138.noc.fibertech.net.pl. [193.106.246.138]) by smtp.gmail.com with ESMTPSA id i11sm2789587lfo.84.2020.03.27.03.29.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Mar 2020 03:29:11 -0700 (PDT) From: Michal Krawczyk To: dev@dpdk.org Cc: mw@semihalf.com, mba@semihalf.com, gtzalik@amazon.com, evgenys@amazon.com, igorch@amazon.com, stable@dpdk.org, Michal Krawczyk Date: Fri, 27 Mar 2020 11:17:56 +0100 Message-Id: <20200327101823.12646-3-mk@semihalf.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200327101823.12646-1-mk@semihalf.com> References: <20200327101823.12646-1-mk@semihalf.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH 02/29] net/ena/base: make allocation macros thread-safe X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Igor Chauskin 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 Reviewed-by: Guy Tzalik --- drivers/net/ena/base/ena_plat_dpdk.h | 8 +++++--- drivers/net/ena/ena_ethdev.c | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/ena/base/ena_plat_dpdk.h b/drivers/net/ena/base/ena_plat_dpdk.h index b611fb204b..192bbaefcf 100644 --- a/drivers/net/ena/base/ena_plat_dpdk.h +++ b/drivers/net/ena/base/ena_plat_dpdk.h @@ -180,7 +180,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 { \ @@ -188,7 +188,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; \ @@ -213,7 +214,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 a8f8784a9f..cab38152a7 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