diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2023-08-24 08:23:13 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2023-08-24 08:23:13 -0700 | 
| commit | b5cc3833f13ace75e26e3f7b51cd7b6da5e9cf17 (patch) | |
| tree | aa8a16262c569e85c7536e6e60edb240c2c6a902 /drivers/net/ethernet/intel/ice/ice_vf_lib.c | |
| parent | 93f5de5f648d2b1ce3540a4ac71756d4a852dc23 (diff) | |
| parent | 8938fc0c7e16e0868a1083deadc91b95b72ca0da (diff) | |
Merge tag 'net-6.5-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Pull networking fixes from Paolo Abeni:
 "Including fixes from wifi, can and netfilter.
  Fixes to fixes:
   - nf_tables:
       - GC transaction race with abort path
       - defer gc run if previous batch is still pending
  Previous releases - regressions:
   - ipv4: fix data-races around inet->inet_id
   - phy: fix deadlocking in phy_error() invocation
   - mdio: fix C45 read/write protocol
   - ipvlan: fix a reference count leak warning in ipvlan_ns_exit()
   - ice: fix NULL pointer deref during VF reset
   - i40e: fix potential NULL pointer dereferencing of pf->vf in
     i40e_sync_vsi_filters()
   - tg3: use slab_build_skb() when needed
   - mtk_eth_soc: fix NULL pointer on hw reset
  Previous releases - always broken:
   - core: validate veth and vxcan peer ifindexes
   - sched: fix a qdisc modification with ambiguous command request
   - devlink: add missing unregister linecard notification
   - wifi: mac80211: limit reorder_buf_filtered to avoid UBSAN warning
   - batman:
      - do not get eth header before batadv_check_management_packet
      - fix batadv_v_ogm_aggr_send memory leak
   - bonding: fix macvlan over alb bond support
   - mlxsw: set time stamp fields also when its type is MIRROR_UTC"
* tag 'net-6.5-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (54 commits)
  selftests: bonding: add macvlan over bond testing
  selftest: bond: add new topo bond_topo_2d1c.sh
  bonding: fix macvlan over alb bond support
  rtnetlink: Reject negative ifindexes in RTM_NEWLINK
  netfilter: nf_tables: defer gc run if previous batch is still pending
  netfilter: nf_tables: fix out of memory error handling
  netfilter: nf_tables: use correct lock to protect gc_list
  netfilter: nf_tables: GC transaction race with abort path
  netfilter: nf_tables: flush pending destroy work before netlink notifier
  netfilter: nf_tables: validate all pending tables
  ibmveth: Use dcbf rather than dcbfl
  i40e: fix potential NULL pointer dereferencing of pf->vf i40e_sync_vsi_filters()
  net/sched: fix a qdisc modification with ambiguous command request
  igc: Fix the typo in the PTM Control macro
  batman-adv: Hold rtnl lock during MTU update via netlink
  igb: Avoid starting unnecessary workqueues
  can: raw: add missing refcount for memory leak fix
  can: isotp: fix support for transmission of SF without flow control
  bnx2x: new flag for track HW resource allocation
  sfc: allocate a big enough SKB for loopback selftest packet
  ...
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_vf_lib.c')
| -rw-r--r-- | drivers/net/ethernet/intel/ice/ice_vf_lib.c | 34 | 
1 files changed, 8 insertions, 26 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_vf_lib.c b/drivers/net/ethernet/intel/ice/ice_vf_lib.c index b26ce4425f45..ea3310be8354 100644 --- a/drivers/net/ethernet/intel/ice/ice_vf_lib.c +++ b/drivers/net/ethernet/intel/ice/ice_vf_lib.c @@ -186,25 +186,6 @@ int ice_check_vf_ready_for_cfg(struct ice_vf *vf)  }  /** - * ice_check_vf_ready_for_reset - check if VF is ready to be reset - * @vf: VF to check if it's ready to be reset - * - * The purpose of this function is to ensure that the VF is not in reset, - * disabled, and is both initialized and active, thus enabling us to safely - * initialize another reset. - */ -int ice_check_vf_ready_for_reset(struct ice_vf *vf) -{ -	int ret; - -	ret = ice_check_vf_ready_for_cfg(vf); -	if (!ret && !test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) -		ret = -EAGAIN; - -	return ret; -} - -/**   * ice_trigger_vf_reset - Reset a VF on HW   * @vf: pointer to the VF structure   * @is_vflr: true if VFLR was issued, false if not @@ -631,11 +612,17 @@ int ice_reset_vf(struct ice_vf *vf, u32 flags)  		return 0;  	} +	if (flags & ICE_VF_RESET_LOCK) +		mutex_lock(&vf->cfg_lock); +	else +		lockdep_assert_held(&vf->cfg_lock); +  	if (ice_is_vf_disabled(vf)) {  		vsi = ice_get_vf_vsi(vf);  		if (!vsi) {  			dev_dbg(dev, "VF is already removed\n"); -			return -EINVAL; +			err = -EINVAL; +			goto out_unlock;  		}  		ice_vsi_stop_lan_tx_rings(vsi, ICE_NO_RESET, vf->vf_id); @@ -644,14 +631,9 @@ int ice_reset_vf(struct ice_vf *vf, u32 flags)  		dev_dbg(dev, "VF is already disabled, there is no need for resetting it, telling VM, all is fine %d\n",  			vf->vf_id); -		return 0; +		goto out_unlock;  	} -	if (flags & ICE_VF_RESET_LOCK) -		mutex_lock(&vf->cfg_lock); -	else -		lockdep_assert_held(&vf->cfg_lock); -  	/* Set VF disable bit state here, before triggering reset */  	set_bit(ICE_VF_STATE_DIS, vf->vf_states);  	ice_trigger_vf_reset(vf, flags & ICE_VF_RESET_VFLR, false);  | 
