cxgb4vf: fix memleak in mac_hlist initialization
authorArjun Vynipadath <arjun@chelsio.com>
Fri, 9 Nov 2018 09:22:01 +0000 (14:52 +0530)
committerDavid S. Miller <davem@davemloft.net>
Fri, 9 Nov 2018 23:18:22 +0000 (15:18 -0800)
mac_hlist was initialized during adapter_up, which will be called
every time a vf device is first brought up, or every time when device
is brought up again after bringing all devices down. This means our
state of previous list is lost, causing a memleak if entries are
present in the list. To fix that, move list init to the condition
that performs initial one time adapter setup.

Signed-off-by: Arjun Vynipadath <arjun@chelsio.com>
Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c

index ff84791a0ff853bf571aeb89014ec92d66eb6275..972dc7bd721d9a7412e48c429a75eb376a1b5486 100644 (file)
@@ -722,6 +722,10 @@ static int adapter_up(struct adapter *adapter)
 
                if (adapter->flags & USING_MSIX)
                        name_msix_vecs(adapter);
+
+               /* Initialize hash mac addr list*/
+               INIT_LIST_HEAD(&adapter->mac_hlist);
+
                adapter->flags |= FULL_INIT_DONE;
        }
 
@@ -747,8 +751,6 @@ static int adapter_up(struct adapter *adapter)
        enable_rx(adapter);
        t4vf_sge_start(adapter);
 
-       /* Initialize hash mac addr list*/
-       INIT_LIST_HEAD(&adapter->mac_hlist);
        return 0;
 }