net/bonding: fix memory leak on closing device
[dpdk.git] / drivers / net / bonding / rte_eth_bond_pmd.c
index a675566..54987d9 100644 (file)
@@ -473,17 +473,13 @@ update_client_stats(uint32_t addr, uint16_t port, uint32_t *TXorRXindicator)
 #ifdef RTE_LIBRTE_BOND_DEBUG_ALB
 #define MODE6_DEBUG(info, src_ip, dst_ip, eth_h, arp_op, port, burstnumber) \
        rte_log(RTE_LOG_DEBUG, bond_logtype,                            \
-               "%s port:%d SrcMAC:%02X:%02X:%02X:%02X:%02X:%02X SrcIP:%s " \
-               "DstMAC:%02X:%02X:%02X:%02X:%02X:%02X DstIP:%s %s %d\n", \
+               "%s port:%d SrcMAC:" RTE_ETHER_ADDR_PRT_FMT " SrcIP:%s " \
+               "DstMAC:" RTE_ETHER_ADDR_PRT_FMT " DstIP:%s %s %d\n", \
                info,                                                   \
                port,                                                   \
-               eth_h->s_addr.addr_bytes[0], eth_h->s_addr.addr_bytes[1], \
-               eth_h->s_addr.addr_bytes[2], eth_h->s_addr.addr_bytes[3], \
-               eth_h->s_addr.addr_bytes[4], eth_h->s_addr.addr_bytes[5], \
+               RTE_ETHER_ADDR_BYTES(&eth_h->s_addr),                  \
                src_ip,                                                 \
-               eth_h->d_addr.addr_bytes[0], eth_h->d_addr.addr_bytes[1], \
-               eth_h->d_addr.addr_bytes[2], eth_h->d_addr.addr_bytes[3], \
-               eth_h->d_addr.addr_bytes[4], eth_h->d_addr.addr_bytes[5], \
+               RTE_ETHER_ADDR_BYTES(&eth_h->d_addr),                  \
                dst_ip,                                                 \
                arp_op, ++burstnumber)
 #endif
@@ -2163,6 +2159,9 @@ bond_ethdev_close(struct rte_eth_dev *dev)
         */
        rte_mempool_free(internals->mode6.mempool);
 
+       if (internals->kvlist != NULL)
+               rte_kvargs_free(internals->kvlist);
+
        return 0;
 }
 
@@ -3475,8 +3474,6 @@ bond_remove(struct rte_vdev_device *dev)
                ret = bond_ethdev_stop(eth_dev);
                bond_ethdev_close(eth_dev);
        }
-       if (internals->kvlist != NULL)
-               rte_kvargs_free(internals->kvlist);
        rte_eth_dev_release_port(eth_dev);
 
        return ret;