|
@@ -846,8 +846,10 @@ static void bond_mc_swap(struct bonding *bond, struct slave *new_active,
|
|
|
if (bond->dev->flags & IFF_ALLMULTI)
|
|
|
dev_set_allmulti(old_active->dev, -1);
|
|
|
|
|
|
+ netif_addr_lock_bh(bond->dev);
|
|
|
netdev_for_each_mc_addr(ha, bond->dev)
|
|
|
dev_mc_del(old_active->dev, ha->addr);
|
|
|
+ netif_addr_unlock_bh(bond->dev);
|
|
|
}
|
|
|
|
|
|
if (new_active) {
|
|
@@ -858,8 +860,10 @@ static void bond_mc_swap(struct bonding *bond, struct slave *new_active,
|
|
|
if (bond->dev->flags & IFF_ALLMULTI)
|
|
|
dev_set_allmulti(new_active->dev, 1);
|
|
|
|
|
|
+ netif_addr_lock_bh(bond->dev);
|
|
|
netdev_for_each_mc_addr(ha, bond->dev)
|
|
|
dev_mc_add(new_active->dev, ha->addr);
|
|
|
+ netif_addr_unlock_bh(bond->dev);
|
|
|
}
|
|
|
}
|
|
|
|