diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index dea8ce20fea470cb9c95528eec6fa45c82b39198..4cecb80df854524d5781760050b352dd5c70e61b 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1901,6 +1901,11 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
 	bond_destroy_slave_symlinks(bond_dev, slave_dev);
 
 err_detach:
+	if (!USES_PRIMARY(bond->params.mode)) {
+		netif_addr_lock_bh(bond_dev);
+		bond_mc_list_flush(bond_dev, slave_dev);
+		netif_addr_unlock_bh(bond_dev);
+	}
 	write_lock_bh(&bond->lock);
 	bond_detach_slave(bond, new_slave);
 	write_unlock_bh(&bond->lock);