From 9e399b88ce2f103165512d4005611a1f709deb1d Mon Sep 17 00:00:00 2001 From: Sunil Kumar Kori Date: Wed, 29 Jan 2020 14:47:04 +0530 Subject: [PATCH] net/octeontx: fix memory leak of MAC address table MAC address table is allocated during octeontx device create and same is used to maintain list of MAC address associated to port. This table is not getting freed niether in case of error nor during graceful shutdown of port. Patch fixes memory required memory for both the cases as mentioned. Fixes: f18b146c498d ("net/octeontx: create ethdev ports") Cc: stable@dpdk.org Signed-off-by: Sunil Kumar Kori Acked-by: Harman Kalra --- drivers/net/octeontx/octeontx_ethdev.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c index e23162d8a6..40d9d67dab 100644 --- a/drivers/net/octeontx/octeontx_ethdev.c +++ b/drivers/net/octeontx/octeontx_ethdev.c @@ -351,6 +351,10 @@ octeontx_dev_close(struct rte_eth_dev *dev) rte_free(txq); } + /* Free MAC address table */ + rte_free(dev->data->mac_addrs); + dev->data->mac_addrs = NULL; + dev->tx_pkt_burst = NULL; dev->rx_pkt_burst = NULL; } @@ -1143,7 +1147,7 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, octeontx_log_err("eth_dev->port_id (%d) is diff to orig (%d)", data->port_id, nic->port_id); res = -EINVAL; - goto err; + goto free_mac_addrs; } /* Update port_id mac to eth_dev */ @@ -1162,6 +1166,8 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, rte_eth_dev_probing_finish(eth_dev); return data->port_id; +free_mac_addrs: + rte_free(data->mac_addrs); err: if (nic) octeontx_port_close(nic); -- 2.20.1