bonding: fix vlan_features computing
authorMichal Kubeček <mkubecek@suse.cz>
Tue, 20 May 2014 06:29:35 +0000 (08:29 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 22 May 2014 19:07:23 +0000 (15:07 -0400)
bond_compute_features() uses netdev_increment_features() to
combine vlan_features of slaves into vlan_features of the bond.
As netdev_increment_features() only adds most features and we
start with BOND_VLAN_FEATURES, we can end up with features none
of the slaves provided.

If there is at least one slave, initialize vlan_features only
with the flags in NETIF_F_ALL_FOR_ALL. Right now there is none
in BOND_VLAN_FEATURES but stating it explicitely will make the
code more future proof.

Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c

index 712320532105e43c9cdea38c3870ffe0768c0ab8..9071139d2871a48d8c210e68a537d0fa9a1204de 100644 (file)
@@ -1038,6 +1038,7 @@ static void bond_compute_features(struct bonding *bond)
 
        if (!bond_has_slaves(bond))
                goto done;
+       vlan_features &= NETIF_F_ALL_FOR_ALL;
 
        bond_for_each_slave(bond, slave, iter) {
                vlan_features = netdev_increment_features(vlan_features,