From: nikolay@redhat.com <nikolay@redhat.com>
Date: Thu, 18 Apr 2013 07:33:34 +0000 (+0000)
Subject: bonding: mc addresses don't get deleted on enslave failure
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=25e40305d4f4399bc8ecf9c9b7cf43493bb40bbd;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git

bonding: mc addresses don't get deleted on enslave failure

Add bond_mc_list_flush() after err_detach as that's the first error path
after the addresses are added. The main issue is the mc addresses' refcount
which only gets bumped up.

v2: update log message and don't move code unnecessarily

Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---

diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index dea8ce20fea4..4cecb80df854 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1901,6 +1901,11 @@ err_dest_symlinks:
 	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);