ice: fix wrong fallback logic for FDIR
[ Upstream commit b4a01ace20f5c93c724abffc0a83ec84f514b98d ] When adding a FDIR filter, if ice_vc_fdir_set_irq_ctx returns failure, the inserted fdir entry will not be removed and if ice_vc_fdir_write_fltr returns failure, the fdir context info for irq handler will not be cleared which may lead to inconsistent or memory leak issue. This patch refines failure cases to resolve this issue. Fixes: 1f7ea1cd6a37 ("ice: Enable FDIR Configure for AVF") Signed-off-by: Simei Su <simei.su@intel.com> Tested-by: Rafal Romanowski <rafal.romanowski@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
6460fee86a
commit
aad3b871ef
@ -1871,7 +1871,7 @@ int ice_vc_add_fdir_fltr(struct ice_vf *vf, u8 *msg)
|
||||
v_ret = VIRTCHNL_STATUS_SUCCESS;
|
||||
stat->status = VIRTCHNL_FDIR_FAILURE_RULE_NORESOURCE;
|
||||
dev_dbg(dev, "VF %d: set FDIR context failed\n", vf->vf_id);
|
||||
goto err_free_conf;
|
||||
goto err_rem_entry;
|
||||
}
|
||||
|
||||
ret = ice_vc_fdir_write_fltr(vf, conf, true, is_tun);
|
||||
@ -1880,15 +1880,16 @@ int ice_vc_add_fdir_fltr(struct ice_vf *vf, u8 *msg)
|
||||
stat->status = VIRTCHNL_FDIR_FAILURE_RULE_NORESOURCE;
|
||||
dev_err(dev, "VF %d: writing FDIR rule failed, ret:%d\n",
|
||||
vf->vf_id, ret);
|
||||
goto err_rem_entry;
|
||||
goto err_clr_irq;
|
||||
}
|
||||
|
||||
exit:
|
||||
kfree(stat);
|
||||
return ret;
|
||||
|
||||
err_rem_entry:
|
||||
err_clr_irq:
|
||||
ice_vc_fdir_clear_irq_ctx(vf);
|
||||
err_rem_entry:
|
||||
ice_vc_fdir_remove_entry(vf, conf, conf->flow_id);
|
||||
err_free_conf:
|
||||
devm_kfree(dev, conf);
|
||||
|
Loading…
x
Reference in New Issue
Block a user