mirror_ubuntu-kernels/drivers/net/ethernet/intel/ice
Jacob Keller 3ad5c10bf2 ice: protect init and calibrating check in ice_ptp_request_ts
When requesting a new timestamp, the ice_ptp_request_ts function does not
hold the Tx tracker lock while checking init and calibrating. This means
that we might issue a new timestamp request just after the Tx timestamp
tracker starts being deinitialized. This could lead to incorrect access of
the timestamp structures. Correct this by moving the init and calibrating
checks under the lock, and updating the flows which modify these fields to
use the lock.

Note that we do not need to hold the lock while checking for tx->init in
ice_ptp_tx_tstamp. This is because the teardown function will use
synchronize_irq after clearing the flag to ensure that the threaded
interrupt completes. Either a) the tx->init flag will be cleared before the
ice_ptp_tx_tstamp function starts, thus it will exit immediately, or b) the
threaded interrupt will be executing and the synchronize_irq will wait
until the threaded interrupt has completed at which point we know the init
field has definitely been set and new interrupts will not execute the Tx
timestamp thread function.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Gurucharan G <gurucharanx.g@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
2022-12-08 13:12:54 -08:00
..
ice_adminq_cmd.h ice: Introduce new parameters in ice_sched_node 2022-11-17 21:41:27 -08:00
ice_arfs.c ice: arfs: fix use-after-free when freeing @rx_cpu_rmap 2022-04-08 09:08:36 -07:00
ice_arfs.h ice: remove circular header dependencies on ice.h 2022-03-14 17:22:58 -07:00
ice_base.c ice: Use ICE_RLAN_BASE_S instead of magic number 2022-11-23 08:59:43 -08:00
ice_base.h
ice_cgu_regs.h
ice_common.c ice: Remove and replace ice speed defines with ethtool.h versions 2022-11-23 08:59:42 -08:00
ice_common.h ice: Remove and replace ice speed defines with ethtool.h versions 2022-11-23 08:59:42 -08:00
ice_controlq.c
ice_controlq.h
ice_dcb_lib.c ice: Accumulate HW and Netdev statistics over reset 2022-11-23 08:59:43 -08:00
ice_dcb_lib.h
ice_dcb_nl.c
ice_dcb_nl.h
ice_dcb.c ice: Add an option to pre-allocate memory for ice_sched_node 2022-11-17 21:41:28 -08:00
ice_dcb.h ice: remove circular header dependencies on ice.h 2022-03-14 17:22:58 -07:00
ice_devids.h ice: support features on new E810T variants 2022-09-28 11:40:57 -07:00
ice_devlink.c net: devlink: let the core report the driver name instead of the drivers 2022-11-30 21:49:38 -08:00
ice_devlink.h ice: Prevent ADQ, DCB coexistence with Custom Tx scheduler 2022-11-17 21:41:28 -08:00
ice_eswitch.c net: drop the weight argument from netif_napi_add 2022-09-28 18:57:14 -07:00
ice_eswitch.h ice: allow creating VFs for !CONFIG_NET_SWITCHDEV 2022-04-14 08:19:54 -07:00
ice_ethtool_fdir.c ice: Use correct order for the parameters of devm_kcalloc() 2022-06-08 08:55:13 -07:00
ice_ethtool.c ice: Accumulate ring statistics over reset 2022-11-23 08:59:43 -08:00
ice_fdir.c
ice_fdir.h
ice_flex_pipe.c ice: Add support for PPPoE hardware offload 2022-07-26 10:56:32 -07:00
ice_flex_pipe.h ice: Fix FV offset searching 2022-03-11 08:28:27 -08:00
ice_flex_type.h ice: Support GTP-U and GTP-C offload in switchdev 2022-03-11 08:28:28 -08:00
ice_flow.c ice: remove circular header dependencies on ice.h 2022-03-14 17:22:58 -07:00
ice_flow.h ice: remove circular header dependencies on ice.h 2022-03-14 17:22:58 -07:00
ice_fltr.c ice: Ignore error message when setting same promiscuous mode 2022-08-17 09:30:44 -07:00
ice_fltr.h
ice_fw_update.c ice: handle E822 generic device ID in PLDM header 2022-07-12 09:25:34 -07:00
ice_fw_update.h
ice_gnss.c ice: add write functionality for GNSS TTY 2022-07-21 13:25:17 -07:00
ice_gnss.h ice: add write functionality for GNSS TTY 2022-07-21 13:25:17 -07:00
ice_hw_autogen.h ice: Add support Flex RXD 2022-10-27 13:23:43 +02:00
ice_idc_int.h ice: remove circular header dependencies on ice.h 2022-03-14 17:22:58 -07:00
ice_idc.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-05-12 16:15:30 -07:00
ice_lag.c ice: remove non-inclusive language 2022-08-18 08:26:11 -07:00
ice_lag.h ice: remove non-inclusive language 2022-08-18 08:26:11 -07:00
ice_lan_tx_rx.h ice: Remove and replace ice speed defines with ethtool.h versions 2022-11-23 08:59:42 -08:00
ice_lib.c ice: Accumulate ring statistics over reset 2022-11-23 08:59:43 -08:00
ice_lib.h ice: Fix spurious interrupt during removal of trusted VF 2022-11-09 13:20:38 -08:00
ice_main.c ice: always call ice_ptp_link_change and make it void 2022-12-08 11:13:21 -08:00
ice_nvm.c ice: Add additional flags to ice_nvm_write_activate 2022-08-24 08:45:54 -07:00
ice_nvm.h ice: Add additional flags to ice_nvm_write_activate 2022-08-24 08:45:54 -07:00
ice_osdep.h ice: remove circular header dependencies on ice.h 2022-03-14 17:22:58 -07:00
ice_pf_vsi_vlan_ops.c ice: Support configuring the device to Double VLAN Mode 2022-02-09 09:24:45 -08:00
ice_pf_vsi_vlan_ops.h
ice_protocol_type.h ice: Add L2TPv3 hardware offload support 2022-09-20 09:13:38 +02:00
ice_ptp_consts.h
ice_ptp_hw.c ice: check Tx timestamp memory register for ready timestamps 2022-12-08 11:13:21 -08:00
ice_ptp_hw.h ice: check Tx timestamp memory register for ready timestamps 2022-12-08 11:13:21 -08:00
ice_ptp.c ice: protect init and calibrating check in ice_ptp_request_ts 2022-12-08 13:12:54 -08:00
ice_ptp.h ice: protect init and calibrating check in ice_ptp_request_ts 2022-12-08 13:12:54 -08:00
ice_repr.c ice: Accumulate ring statistics over reset 2022-11-23 08:59:43 -08:00
ice_repr.h ice: remove circular header dependencies on ice.h 2022-03-14 17:22:58 -07:00
ice_sbq_cmd.h
ice_sched.c ice: Add an option to pre-allocate memory for ice_sched_node 2022-11-17 21:41:28 -08:00
ice_sched.h ice: Add an option to pre-allocate memory for ice_sched_node 2022-11-17 21:41:28 -08:00
ice_sriov.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-07-28 18:21:16 -07:00
ice_sriov.h ice: introduce ice_virtchnl.c and ice_virtchnl.h 2022-03-15 13:23:10 -07:00
ice_switch.c ice: Add L2TPv3 hardware offload support 2022-09-20 09:13:38 +02:00
ice_switch.h ice: Introduce enabling promiscuous mode on multiple VF's 2022-07-28 11:44:22 -07:00
ice_tc_lib.c ice: Enable RX queue selection using skbedit action 2022-10-25 10:32:40 +02:00
ice_tc_lib.h ice: Enable RX queue selection using skbedit action 2022-10-25 10:32:40 +02:00
ice_trace.h ice: add trace events for tx timestamps 2022-03-16 10:38:15 -07:00
ice_txrx_lib.c ice: Accumulate ring statistics over reset 2022-11-23 08:59:43 -08:00
ice_txrx_lib.h
ice_txrx.c ice: Accumulate ring statistics over reset 2022-11-23 08:59:43 -08:00
ice_txrx.h ice: Accumulate ring statistics over reset 2022-11-23 08:59:43 -08:00
ice_type.h ice: Prevent ADQ, DCB coexistence with Custom Tx scheduler 2022-11-17 21:41:28 -08:00
ice_vf_lib_private.h ice: virtchnl rss hena support 2022-11-14 10:44:38 +00:00
ice_vf_lib.c ice: virtchnl rss hena support 2022-11-14 10:44:38 +00:00
ice_vf_lib.h ice: Fix promiscuous mode not turning off 2022-07-28 11:44:40 -07:00
ice_vf_mbx.c ice: Remove and replace ice speed defines with ethtool.h versions 2022-11-23 08:59:42 -08:00
ice_vf_mbx.h ice: rename ice_sriov.c to ice_vf_mbx.c 2022-03-14 17:22:58 -07:00
ice_vf_vsi_vlan_ops.c ice: rename ice_virtchnl_pf.c to ice_sriov.c 2022-03-14 17:22:58 -07:00
ice_vf_vsi_vlan_ops.h
ice_virtchnl_allowlist.c ice: Add support Flex RXD 2022-10-27 13:23:43 +02:00
ice_virtchnl_allowlist.h
ice_virtchnl_fdir.c ice: always check VF VSI pointer values 2022-05-05 11:28:36 -07:00
ice_virtchnl_fdir.h ice: introduce ice_vf_lib.c, ice_vf_lib.h, and ice_vf_lib_private.h 2022-03-15 13:22:13 -07:00
ice_virtchnl.c ice: Fix configuring VIRTCHNL_OP_CONFIG_VSI_QUEUES with unbalanced queues 2022-11-23 08:59:43 -08:00
ice_virtchnl.h ice: virtchnl rss hena support 2022-11-14 10:44:38 +00:00
ice_vlan_mode.c ice: Add support for VLAN TPID filters in switchdev 2022-06-30 13:53:33 -07:00
ice_vlan_mode.h ice: Support configuring the device to Double VLAN Mode 2022-02-09 09:24:45 -08:00
ice_vlan.h
ice_vsi_vlan_lib.c ice: Support configuring the device to Double VLAN Mode 2022-02-09 09:24:45 -08:00
ice_vsi_vlan_lib.h
ice_vsi_vlan_ops.c
ice_vsi_vlan_ops.h ice: Support configuring the device to Double VLAN Mode 2022-02-09 09:24:45 -08:00
ice_xsk.c ice: Accumulate ring statistics over reset 2022-11-23 08:59:43 -08:00
ice_xsk.h ice: xsk: change batched Tx descriptor cleaning 2022-09-27 08:11:02 -07:00
ice.h ice: Accumulate ring statistics over reset 2022-11-23 08:59:43 -08:00
Makefile ice: fix access-beyond-end in the switch code 2022-06-02 12:41:10 +02:00