Commit b20903f2 authored by nikolay@redhat.com's avatar nikolay@redhat.com Committed by David S. Miller

bonding: unwind on bond_add_vlan failure

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: default avatarNikolay Aleksandrov <nikolay@redhat.com>
Acked-by: default avatarVeaceslav Falico <vfalico@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1ff412ad
...@@ -455,13 +455,13 @@ static int bond_vlan_rx_add_vid(struct net_device *bond_dev, ...@@ -455,13 +455,13 @@ static int bond_vlan_rx_add_vid(struct net_device *bond_dev,
if (res) { if (res) {
pr_err("%s: Error: Failed to add vlan id %d\n", pr_err("%s: Error: Failed to add vlan id %d\n",
bond_dev->name, vid); bond_dev->name, vid);
return res; goto unwind;
} }
return 0; return 0;
unwind: unwind:
/* unwind from head to the slave that failed */ /* unwind from the slave that failed */
bond_for_each_slave_continue_reverse(bond, slave) bond_for_each_slave_continue_reverse(bond, slave)
vlan_vid_del(slave->dev, proto, vid); vlan_vid_del(slave->dev, proto, vid);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment