Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1577595

[PATCH V4 net-next 09/13] net/ena: use READ_ONCE to access completion descriptors

Path csiph.com!1.us.feeder.erje.net!2.us.feeder.erje.net!feeder.erje.net!1.eu.feeder.erje.net!weretis.net!feeder4.news.weretis.net!news.mixmin.net!aioe.org!news.servidellagleba.it!bofh.it!news.nic.it!robomod
From Netanel Belgazal <netanel@annapurnalabs.com>
Newsgroups linux.kernel
Subject [PATCH V4 net-next 09/13] net/ena: use READ_ONCE to access completion descriptors
Date Thu, 09 Feb 2017 14:40:04 +0100
Message-ID <t8X76-6JS-87@gated-at.bofh.it> (permalink)
References <t8WXn-6Gp-3@gated-at.bofh.it>
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=annapurnalabs-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=gIZAfDydb0JxPwRq2NA/mCtYnEq/JldDHXrby0X3T9I=; b=NsGev6ytrRNTlhzJzpNnVod9xzF/pMlKy82+L3d7tVQmWWMjB3j3XPia27c/N8vKWe ijXODaSYDsViBhshiDMxD4o28tBCCvGPuUPJ2UAOVbzEpG8+evIs+sViJurRWSMBUvuN uYgVKInap5sp32v5jWqA+dbeEDjTyixHkxaT/6u5ar/1uF6hrKIXqsDVdZ76TI6b5gJz FfHkvib73jeyYicQqlbTigoWDSDmkTyP07/rD1DrOZ4dvg/M0BSdneYRuJNuCQrWCmFv YLR8tTiBQj8mu7bzG7wITbfEZ/Vo8koDEZP/V7yRJQGPwYm5AFQwRvmKwCuR/PiOkDLn owfg==
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; bh=gIZAfDydb0JxPwRq2NA/mCtYnEq/JldDHXrby0X3T9I=; b=ZMcmrpZMe/4k9oTs7fshDf8vG0+bj3pMzCvdFLCysBPoU7z1RcK7u7sbLTjf2qKuHs k4c8WyGnAXC3CHXvDLG7gA3vPXvVnP09xtLMnNaZ5BMmc7/w9F6xnQsXtsOCv6Lf3SVD sEoiyFP8jhx9jhJN8FWnmfVU/VYHVtP+pXGygNz30/mSHtP0Xw8xRJ9yxSkoc5mCviPI 2pygXj/EUm01KEj3jbaPUBFpfjoib58Lt+++XEA6ZsPcuKyeGBT1pHswjL/iyemkfthZ H5FPcgK+xI/Z56lG0/Li5lUyLBH37pX6PigfWH0a12r1F+h9yyDQ/bIMkdNRIfixr2g1 uP/Q==
X-Gm-Message-State AMke39llP0IJyuZjnI3PMpSnCcgaNZsPG0cN3qsa2I+JXQmlX1BmIUIF4C5XfyxnooJ+zt8u
X-Received by 10.223.145.227 with SMTP id 90mr2997625wri.156.1486646535375; Thu, 09 Feb 2017 05:22:15 -0800 (PST)
X-Mailer git-send-email 2.7.4
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 61
Organization linux.* mail to news gateway
X-Original-Cc Netanel Belgazal <netanel@annapurnalabs.com>, dwmw@amazon.com, zorik@annapurnalabs.com, alex@annapurnalabs.com, saeed@annapurnalabs.com, msw@amazon.com, aliguori@amazon.com, nafea@annapurnalabs.com, eric.dumazet@gmail.com, evgenys@annapurnalabs.com
X-Original-Date Thu, 9 Feb 2017 15:21:35 +0200
X-Original-Message-ID <1486646499-13682-10-git-send-email-netanel@annapurnalabs.com>
X-Original-References <1486646499-13682-1-git-send-email-netanel@annapurnalabs.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1577595

Show key headers only | View raw


Completion descriptors are accessed from the driver and from the device.
To avoid reading the old value, use READ_ONCE macro.

Signed-off-by: Netanel Belgazal <netanel@annapurnalabs.com>
---
 drivers/net/ethernet/amazon/ena/ena_com.h     | 1 +
 drivers/net/ethernet/amazon/ena/ena_eth_com.c | 8 ++++----
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/amazon/ena/ena_com.h b/drivers/net/ethernet/amazon/ena/ena_com.h
index 509d7b8..c9b33ee 100644
--- a/drivers/net/ethernet/amazon/ena/ena_com.h
+++ b/drivers/net/ethernet/amazon/ena/ena_com.h
@@ -33,6 +33,7 @@
 #ifndef ENA_COM
 #define ENA_COM
 
+#include <linux/compiler.h>
 #include <linux/delay.h>
 #include <linux/dma-mapping.h>
 #include <linux/gfp.h>
diff --git a/drivers/net/ethernet/amazon/ena/ena_eth_com.c b/drivers/net/ethernet/amazon/ena/ena_eth_com.c
index 539c536..f999305 100644
--- a/drivers/net/ethernet/amazon/ena/ena_eth_com.c
+++ b/drivers/net/ethernet/amazon/ena/ena_eth_com.c
@@ -45,7 +45,7 @@ static inline struct ena_eth_io_rx_cdesc_base *ena_com_get_next_rx_cdesc(
 	cdesc = (struct ena_eth_io_rx_cdesc_base *)(io_cq->cdesc_addr.virt_addr
 			+ (head_masked * io_cq->cdesc_entry_size_in_bytes));
 
-	desc_phase = (cdesc->status & ENA_ETH_IO_RX_CDESC_BASE_PHASE_MASK) >>
+	desc_phase = (READ_ONCE(cdesc->status) & ENA_ETH_IO_RX_CDESC_BASE_PHASE_MASK) >>
 			ENA_ETH_IO_RX_CDESC_BASE_PHASE_SHIFT;
 
 	if (desc_phase != expected_phase)
@@ -141,7 +141,7 @@ static inline u16 ena_com_cdesc_rx_pkt_get(struct ena_com_io_cq *io_cq,
 
 		ena_com_cq_inc_head(io_cq);
 		count++;
-		last = (cdesc->status & ENA_ETH_IO_RX_CDESC_BASE_LAST_MASK) >>
+		last = (READ_ONCE(cdesc->status) & ENA_ETH_IO_RX_CDESC_BASE_LAST_MASK) >>
 			ENA_ETH_IO_RX_CDESC_BASE_LAST_SHIFT;
 	} while (!last);
 
@@ -489,13 +489,13 @@ int ena_com_tx_comp_req_id_get(struct ena_com_io_cq *io_cq, u16 *req_id)
 	 * expected, it mean that the device still didn't update
 	 * this completion.
 	 */
-	cdesc_phase = cdesc->flags & ENA_ETH_IO_TX_CDESC_PHASE_MASK;
+	cdesc_phase = READ_ONCE(cdesc->flags) & ENA_ETH_IO_TX_CDESC_PHASE_MASK;
 	if (cdesc_phase != expected_phase)
 		return -EAGAIN;
 
 	ena_com_cq_inc_head(io_cq);
 
-	*req_id = cdesc->req_id;
+	*req_id = READ_ONCE(cdesc->req_id);
 
 	return 0;
 }
-- 
2.7.4

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH V4 net-next 00/13]  Bug Fixes in ENA driver Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 14:30 +0100
  [PATCH V4 net-next 05/13] net/ena: fix NULL dereference when removing the driver after device reset failed Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 14:30 +0100
  [PATCH V4 net-next 02/13] net/ena: fix queues number calculation Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 14:30 +0100
  [PATCH V4 net-next 03/13] net/ena: fix ethtool RSS flow configuration Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 14:30 +0100
  [PATCH V4 net-next 06/13] net/ena: refactor ena_get_stats64 to be atomic context safe Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 14:30 +0100
  [PATCH V4 net-next 13/13] net/ena: update driver version to 1.1.2 Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 14:40 +0100
  [PATCH V4 net-next 07/13] net/ena: fix potential access to freed memory during device reset Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 14:40 +0100
  [PATCH V4 net-next 10/13] net/ena: reduce the severity of ena printouts Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 14:40 +0100
  [PATCH V4 net-next 08/13] net/ena: use napi_complete_done() return value Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 14:40 +0100
  [PATCH V4 net-next 11/13] net/ena: change driver's default timeouts Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 14:40 +0100
  [PATCH V4 net-next 09/13] net/ena: use READ_ONCE to access completion descriptors Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 14:40 +0100
  [PATCH V4 net-next 01/13] net/ena: remove ntuple filter support from device feature list Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 14:40 +0100
  [PATCH V4 net-next 04/13] net/ena: fix RSS default hash configuration Netanel Belgazal <netanel@annapurnalabs.com> - 2017-02-09 15:30 +0100
  Re: [PATCH V4 net-next 00/13] Bug Fixes in ENA driver David Miller <davem@davemloft.net> - 2017-02-10 04:30 +0100

csiph-web