switchdev: fix: erasing too much of vlan obj when handling multiple vlan specs

When adding vlans with multiple IFLA_BRIDGE_VLAN_INFO attrs set in AFSPEC,
we would wipe the vlan obj struct after the first IFLA_BRIDGE_VLAN_INFO.
Fix this by only clearing what's necessary on each IFLA_BRIDGE_VLAN_INFO
iteration.

Fixes: 9e8f4a54 ("switchdev: push object ID back to object structure")
Signed-off-by: Scott Feldman <sfeldma@gmail.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Scott Feldman 2015-10-28 23:17:30 -07:00 committed by David S. Miller
parent 740215ddb5
commit 3a7bde55a1

View File

@ -869,7 +869,7 @@ static int switchdev_port_br_afspec(struct net_device *dev,
err = f(dev, &vlan.obj);
if (err)
return err;
memset(&vlan, 0, sizeof(vlan));
vlan.vid_begin = 0;
} else {
if (vlan.vid_begin)
return -EINVAL;
@ -878,7 +878,7 @@ static int switchdev_port_br_afspec(struct net_device *dev,
err = f(dev, &vlan.obj);
if (err)
return err;
memset(&vlan, 0, sizeof(vlan));
vlan.vid_begin = 0;
}
}