]> git.droids-corp.org - dpdk.git/blobdiff - drivers/net/mlx4/mlx4.c
ethdev: free all common data when releasing port
[dpdk.git] / drivers / net / mlx4 / mlx4.c
index 3de7bc53e54a91e8a7c43e3822401e28a064e095..7f07b8dc09f149a07a56af036584b01f67e0d14b 100644 (file)
@@ -781,12 +781,17 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
                continue;
 port_error:
                rte_free(priv);
+               if (eth_dev != NULL)
+                       eth_dev->data->dev_private = NULL;
                if (pd)
                        claim_zero(mlx4_glue->dealloc_pd(pd));
                if (ctx)
                        claim_zero(mlx4_glue->close_device(ctx));
-               if (eth_dev)
+               if (eth_dev != NULL) {
+                       /* mac_addrs must not be freed because part of dev_private */
+                       eth_dev->data->mac_addrs = NULL;
                        rte_eth_dev_release_port(eth_dev);
+               }
                break;
        }
        /*