i40e: rework exit flow of i40e_add_fdir_ethtool
Refactor the exit flow of the i40e_add_fdir_ethtool function. Move the input_label to the end of the function, removing the dependency on having a non-zero return value. Add a comment explaining why it is ok not to free the fdir data structure, because the structure is now stored in the fdir_filter_list. Change-Id: I723342181d59cd0c9f3b31140c37961ba37bb242 Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
8ce43dce6f
commit
01016da1e5
|
@ -2828,12 +2828,19 @@ static int i40e_add_fdir_ethtool(struct i40e_vsi *vsi,
|
|||
}
|
||||
|
||||
ret = i40e_add_del_fdir(vsi, input, true);
|
||||
free_input:
|
||||
if (ret)
|
||||
kfree(input);
|
||||
else
|
||||
i40e_update_ethtool_fdir_entry(vsi, input, fsp->location, NULL);
|
||||
goto free_input;
|
||||
|
||||
/* Add the input filter to the fdir_input_list, possibly replacing
|
||||
* a previous filter. Do not free the input structure after adding it
|
||||
* to the list as this would cause a use-after-free bug.
|
||||
*/
|
||||
i40e_update_ethtool_fdir_entry(vsi, input, fsp->location, NULL);
|
||||
|
||||
return 0;
|
||||
|
||||
free_input:
|
||||
kfree(input);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue