mlx4_en: nullify cached multicast address list after cleanup
authorAlexander Guller <alexg@mellanox.com>
Mon, 19 Dec 2011 04:02:58 +0000 (04:02 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 19 Dec 2011 19:57:07 +0000 (14:57 -0500)
Solves an issue where we tried to free the same page twice after
the port has been opened and closed.

Signed-off-by: Alexander Guller <alexg@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/en_netdev.c

index 1db6fea495bf9a568540ff8aaa45451e0f5c60e0..72fa807b69ce1581ac62dea599ce121e19e74f9c 100644 (file)
@@ -151,6 +151,7 @@ static void mlx4_en_clear_list(struct net_device *dev)
        struct mlx4_en_priv *priv = netdev_priv(dev);
 
        kfree(priv->mc_addrs);
+       priv->mc_addrs = NULL;
        priv->mc_addrs_cnt = 0;
 }
 
@@ -170,6 +171,7 @@ static void mlx4_en_cache_mclist(struct net_device *dev)
        i = 0;
        netdev_for_each_mc_addr(ha, dev)
                memcpy(mc_addrs + i++ * ETH_ALEN, ha->addr, ETH_ALEN);
+       mlx4_en_clear_list(dev);
        priv->mc_addrs = mc_addrs;
        priv->mc_addrs_cnt = mc_addrs_cnt;
 }