]> git.droids-corp.org - dpdk.git/commitdiff
net/octeontx: fix memory leak of MAC address table
authorSunil Kumar Kori <skori@marvell.com>
Wed, 29 Jan 2020 09:17:04 +0000 (14:47 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 5 Feb 2020 08:51:21 +0000 (09:51 +0100)
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 <skori@marvell.com>
Acked-by: Harman Kalra <hkalra@marvell.com>
drivers/net/octeontx/octeontx_ethdev.c

index e23162d8a6cea69da23505fbf7dd3848fff6d90d..40d9d67dab36b94476f0827f20bf1cd2b7550604 100644 (file)
@@ -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);