Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1577595
| 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 | 2017-02-09 14:40 +0100 |
| Message-ID | <t8X76-6JS-87@gated-at.bofh.it> (permalink) |
| References | <t8WXn-6Gp-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
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 | Next — Previous in thread | Next in thread | Find similar | Unroll 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