Message ID | 20230908124201.1836101-1-andrii.staikov@intel.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [iwl-net,v4] i40e: fix potential memory leaks in i40e_remove() | expand |
On Fri, Sep 08, 2023 at 02:42:01PM +0200, Andrii Staikov wrote: > Instead of freeing memory of a single VSI, make sure > the memory for all VSIs is cleared before releasing VSIs. > Add releasing of their resources in a loop with the iteration > number equal to the number of allocated VSIs. > > Fixes: 41c445ff0f48 ("i40e: main driver core") > Signed-off-by: Andrii Staikov <andrii.staikov@intel.com> > Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Reviewed-by: Simon Horman <horms@kernel.org>
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 29ad1797adce..a368a190a22e 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -16323,11 +16323,15 @@ static void i40e_remove(struct pci_dev *pdev) i40e_switch_branch_release(pf->veb[i]); } - /* Now we can shutdown the PF's VSI, just before we kill + /* Now we can shutdown the PF's VSIs, just before we kill * adminq and hmc. */ - if (pf->vsi[pf->lan_vsi]) - i40e_vsi_release(pf->vsi[pf->lan_vsi]); + for (i = pf->num_alloc_vsi; i--;) + if (pf->vsi[i]) { + i40e_vsi_close(pf->vsi[i]); + i40e_vsi_release(pf->vsi[i]); + pf->vsi[i] = NULL; + } i40e_cloud_filter_exit(pf);