aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding/bond_alb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/bonding/bond_alb.c')
-rw-r--r--drivers/net/bonding/bond_alb.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index d3c6801f101e..95dd1f58c260 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -1042,7 +1042,7 @@ static void alb_send_learning_packets(struct slave *slave, u8 mac_addr[],
1042 struct bonding *bond = bond_get_bond_by_slave(slave); 1042 struct bonding *bond = bond_get_bond_by_slave(slave);
1043 struct net_device *upper; 1043 struct net_device *upper;
1044 struct list_head *iter; 1044 struct list_head *iter;
1045 struct bond_vlan_tag tags[BOND_MAX_VLAN_ENCAP]; 1045 struct bond_vlan_tag *tags;
1046 1046
1047 /* send untagged */ 1047 /* send untagged */
1048 alb_send_lp_vid(slave, mac_addr, 0, 0); 1048 alb_send_lp_vid(slave, mac_addr, 0, 0);
@@ -1070,10 +1070,12 @@ static void alb_send_learning_packets(struct slave *slave, u8 mac_addr[],
1070 * when strict_match is turned off. 1070 * when strict_match is turned off.
1071 */ 1071 */
1072 if (netif_is_macvlan(upper) && !strict_match) { 1072 if (netif_is_macvlan(upper) && !strict_match) {
1073 memset(tags, 0, sizeof(tags)); 1073 tags = bond_verify_device_path(bond->dev, upper, 0);
1074 bond_verify_device_path(bond->dev, upper, tags); 1074 if (IS_ERR_OR_NULL(tags))
1075 BUG();
1075 alb_send_lp_vid(slave, upper->dev_addr, 1076 alb_send_lp_vid(slave, upper->dev_addr,
1076 tags[0].vlan_proto, tags[0].vlan_id); 1077 tags[0].vlan_proto, tags[0].vlan_id);
1078 kfree(tags);
1077 } 1079 }
1078 } 1080 }
1079 rcu_read_unlock(); 1081 rcu_read_unlock();