ice: Change max MSI-x vector_id check in cfg_irq_map
authorBrett Creeley <brett.creeley@intel.com>
Wed, 6 Nov 2019 10:05:34 +0000 (02:05 -0800)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 8 Nov 2019 20:02:56 +0000 (12:02 -0800)
Currently we check to make sure the vector_id passed down from iavf
is less than or equal to pf->hw.func_caps.common_caps.num_msix_vectors.
This is incorrect because the vector_id is always 0-based and never
greater than or equal to the ICE_MAX_INTR_PER_VF. Fix this by checking
to make sure the vector_id is less than the max allowed interrupts per
VF (ICE_MAX_INTR_PER_VF).

Signed-off-by: Brett Creeley <brett.creeley@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ice/ice_virtchnl_pf.c

index 639d1b2a9e19272692acbffaf6821280d4fdabf5..2ac83ad3d1a6b08e77f74dc86f7f9b549bc8c5bf 100644 (file)
@@ -2173,9 +2173,11 @@ static int ice_vc_cfg_irq_map_msg(struct ice_vf *vf, u8 *msg)
 
                vector_id = map->vector_id;
                vsi_id = map->vsi_id;
-               /* validate msg params */
-               if (!(vector_id < pf->hw.func_caps.common_cap
-                   .num_msix_vectors) || !ice_vc_isvalid_vsi_id(vf, vsi_id) ||
+               /* vector_id is always 0-based for each VF, and can never be
+                * larger than or equal to the max allowed interrupts per VF
+                */
+               if (!(vector_id < ICE_MAX_INTR_PER_VF) ||
+                   !ice_vc_isvalid_vsi_id(vf, vsi_id) ||
                    (!vector_id && (map->rxq_map || map->txq_map))) {
                        v_ret = VIRTCHNL_STATUS_ERR_PARAM;
                        goto error_param;