i40e: validate VSI param from VFs
authorMitch Williams <mitch.a.williams@intel.com>
Tue, 31 Mar 2015 07:45:00 +0000 (00:45 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 3 Apr 2015 10:54:28 +0000 (03:54 -0700)
Validate that the VF has sent us a valid VSI index before actually using
that index. Without this code, a malicious or buggy VF driver could
panic the host by sending an invalid index into the VSI array.

Change-ID: I66a177687a0dcc281ec83e714d3813d70d18c8b4
Reported-by: Nick Nunley <nicholas.d.nunley@intel.com>
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Tested-by: Jim Young <james.m.young@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c

index 0a93684130b94e3384ea6fcf986295ce68c971d8..bb184122f563e3ce4bb7a52e3053242365a18c70 100644 (file)
@@ -57,6 +57,8 @@ static inline bool i40e_vc_isvalid_vsi_id(struct i40e_vf *vf, u8 vsi_id)
 {
        struct i40e_pf *pf = vf->pf;
 
+       if (vsi_id > pf->num_alloc_vsi)
+               return false;
        return pf->vsi[vsi_id]->vf_id == vf->vf_id;
 }