mirror of
https://github.com/torvalds/linux.git
synced 2024-12-03 09:31:26 +00:00
i40e: Fix of memory leak and integer truncation in i40e_virtchnl.c
Fixed possible memory leak in i40e_vc_add_cloud_filter function: cfilter is being allocated and in some error conditions the function returns without freeing the memory. Fix of integer truncation from u16 (type of queue_id value) to u8 when calling i40e_vc_isvalid_queue_id function. Signed-off-by: Martyna Szapar <martyna.szapar@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
825f0a4eb7
commit
24474f2709
@ -181,7 +181,7 @@ static inline bool i40e_vc_isvalid_vsi_id(struct i40e_vf *vf, u16 vsi_id)
|
||||
* check for the valid queue id
|
||||
**/
|
||||
static inline bool i40e_vc_isvalid_queue_id(struct i40e_vf *vf, u16 vsi_id,
|
||||
u8 qid)
|
||||
u16 qid)
|
||||
{
|
||||
struct i40e_pf *pf = vf->pf;
|
||||
struct i40e_vsi *vsi = i40e_find_vsi_from_id(pf, vsi_id);
|
||||
@ -3421,7 +3421,7 @@ static int i40e_vc_add_cloud_filter(struct i40e_vf *vf, u8 *msg)
|
||||
|
||||
if (!test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states)) {
|
||||
aq_ret = I40E_ERR_PARAM;
|
||||
goto err;
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
if (!vf->adq_enabled) {
|
||||
@ -3429,7 +3429,7 @@ static int i40e_vc_add_cloud_filter(struct i40e_vf *vf, u8 *msg)
|
||||
"VF %d: ADq is not enabled, can't apply cloud filter\n",
|
||||
vf->vf_id);
|
||||
aq_ret = I40E_ERR_PARAM;
|
||||
goto err;
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
if (i40e_validate_cloud_filter(vf, vcf)) {
|
||||
@ -3437,7 +3437,7 @@ static int i40e_vc_add_cloud_filter(struct i40e_vf *vf, u8 *msg)
|
||||
"VF %d: Invalid input/s, can't apply cloud filter\n",
|
||||
vf->vf_id);
|
||||
aq_ret = I40E_ERR_PARAM;
|
||||
goto err;
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
cfilter = kzalloc(sizeof(*cfilter), GFP_KERNEL);
|
||||
@ -3498,13 +3498,17 @@ static int i40e_vc_add_cloud_filter(struct i40e_vf *vf, u8 *msg)
|
||||
"VF %d: Failed to add cloud filter, err %s aq_err %s\n",
|
||||
vf->vf_id, i40e_stat_str(&pf->hw, ret),
|
||||
i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status));
|
||||
goto err;
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
INIT_HLIST_NODE(&cfilter->cloud_node);
|
||||
hlist_add_head(&cfilter->cloud_node, &vf->cloud_filter_list);
|
||||
/* release the pointer passing it to the collection */
|
||||
cfilter = NULL;
|
||||
vf->num_cloud_filters++;
|
||||
err:
|
||||
err_free:
|
||||
kfree(cfilter);
|
||||
err_out:
|
||||
return i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_ADD_CLOUD_FILTER,
|
||||
aq_ret);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user