[dpdk-dev] [PATCH] librte_ether: release memory in uninit function.
Ananyev, Konstantin
konstantin.ananyev at intel.com
Thu Jun 25 20:32:57 CEST 2015
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
More information about the dev
mailing list