Hi Bernard, > -----Original Message----- > From: Iremonger, Bernard > Sent: Thursday, June 25, 2015 3:30 PM > To: dev at dpdk.org > Cc: Zhang, Helin; Ananyev, Konstantin; Qiu, Michael; mukawa at igel.co.jp; > Iremonger, Bernard > Subject: [PATCH] librte_ether: release memory in uninit function. > > > Signed-off-by: Bernard Iremonger <bernard.iremonger at intel.com> > --- > lib/librte_ether/rte_ethdev.c | 8 +++++++- > 1 files changed, 7 insertions(+), 1 deletions(-) > > diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c > index e13fde5..2404556 100644 > --- a/lib/librte_ether/rte_ethdev.c > +++ b/lib/librte_ether/rte_ethdev.c > @@ -369,8 +369,14 @@ rte_eth_dev_uninit(struct rte_pci_device *pci_dev) > /* free ether device */ > rte_eth_dev_release_port(eth_dev); > > - if (rte_eal_process_type() == RTE_PROC_PRIMARY) > + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { > + rte_free(eth_dev->data->rx_queues); > + rte_free(eth_dev->data->tx_queues); > rte_free(eth_dev->data->dev_private); > + rte_free(eth_dev->data->mac_addrs); > + rte_free(eth_dev->data->hash_mac_addrs);
Sorry, but I don't understand why you put last 2 rte_free()s here. You already do relese mac_addrs and hash_mac_addrs memory at each PMD _uninit routine. Plus, as Stephen said - it would be better if same component (PMD in that case) would do both alloc and free. Apart from that, patch looks good to me. Konstantin > + memset(eth_dev->data, 0, sizeof(struct rte_eth_dev_data)); > + } > > eth_dev->pci_dev = NULL; > eth_dev->driver = NULL; > -- > 1.7.4.1