bonding: unwind on bond_add_vlan failure
authornikolay@redhat.com <nikolay@redhat.com>
Tue, 6 Aug 2013 10:40:16 +0000 (12:40 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 9 Aug 2013 05:31:21 +0000 (22:31 -0700)
In case of bond_add_vlan() failure currently we'll have the vlan's
refcnt bumped up in all slaves, but it will never go down because it
failed to get added to the bond, so properly unwind the added vlan if
bond_add_vlan fails.

Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>
Acked-by: Veaceslav Falico <vfalico@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c

index 78b0aeb1354597e41c874948e32a63af67b9ffa5..4264a7631cbab0ca581e2cb35235300655f79bd2 100644 (file)
@@ -455,13 +455,13 @@ static int bond_vlan_rx_add_vid(struct net_device *bond_dev,
        if (res) {
                pr_err("%s: Error: Failed to add vlan id %d\n",
                       bond_dev->name, vid);
-               return res;
+               goto unwind;
        }
 
        return 0;
 
 unwind:
-       /* unwind from head to the slave that failed */
+       /* unwind from the slave that failed */
        bond_for_each_slave_continue_reverse(bond, slave)
                vlan_vid_del(slave->dev, proto, vid);