net/bnxt: fix a memory leak in port stop
authorKalesh AP <kalesh-anakkur.purayil@broadcom.com>
Thu, 16 Jan 2020 13:04:52 +0000 (18:34 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 5 Feb 2020 08:51:19 +0000 (09:51 +0100)
The memory for mark table is allocated during port start.
But the allocated memory is freed only during port close
or driver unload which in turn causes a memory leakage
on each port start/stop.

Fixed it by moving the memory free to port stop.

Fixes: 94eb699bc82e ("net/bnxt: support flow mark action")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
drivers/net/bnxt/bnxt_ethdev.c

index 436ecbb..2661418 100644 (file)
@@ -970,7 +970,10 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
        bnxt_int_handler(eth_dev);
        bnxt_shutdown_nic(bp);
        bnxt_hwrm_if_change(bp, 0);
-       memset(bp->mark_table, 0, BNXT_MARK_TABLE_SZ);
+
+       rte_free(bp->mark_table);
+       bp->mark_table = NULL;
+
        bp->flags &= ~BNXT_FLAG_RX_VECTOR_PKT_MODE;
        bp->dev_stopped = 1;
        bp->rx_cosq_cnt = 0;
@@ -992,9 +995,6 @@ static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev)
                bp->grp_info = NULL;
        }
 
-       rte_free(bp->mark_table);
-       bp->mark_table = NULL;
-
        bnxt_dev_uninit(eth_dev);
 }