[2/7] net/nfp: fix resource leak for CoreNIC firmware
Checks
Commit Message
Fix the resource leak problem in the logic of CoreNIC firmware
application.
Fixes: 646ea79ce481 ("net/nfp: move PF functions into its own file")
Cc: stable@dpdk.org
Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Long Wu <long.wu@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
drivers/net/nfp/nfp_ethdev.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
@@ -310,6 +310,18 @@ nfp_net_keepalive_stop(struct nfp_multi_pf *multi_pf)
rte_eal_alarm_cancel(nfp_net_beat_timer, (void *)multi_pf);
}
+static void
+nfp_net_uninit(struct rte_eth_dev *eth_dev)
+{
+ struct nfp_net_hw *net_hw;
+
+ net_hw = eth_dev->data->dev_private;
+ rte_free(net_hw->eth_xstats_base);
+ nfp_ipsec_uninit(eth_dev);
+ if (net_hw->mac_stats_area != NULL)
+ nfp_cpp_area_release_free(net_hw->mac_stats_area);
+}
+
/* Reset and stop device. The device can not be restarted. */
static int
nfp_net_close(struct rte_eth_dev *dev)
@@ -1130,12 +1142,11 @@ nfp_init_app_fw_nic(struct nfp_pf_dev *pf_dev,
app_fw_nic->ports[id]->eth_dev != NULL) {
struct rte_eth_dev *tmp_dev;
tmp_dev = app_fw_nic->ports[id]->eth_dev;
- nfp_ipsec_uninit(tmp_dev);
+ nfp_net_uninit(tmp_dev);
rte_eth_dev_release_port(tmp_dev);
- app_fw_nic->ports[id] = NULL;
}
}
- nfp_cpp_area_free(pf_dev->ctrl_area);
+ nfp_cpp_area_release_free(pf_dev->ctrl_area);
app_cleanup:
rte_free(app_fw_nic);