diff options
author | Scott Feldman <sfeldma@gmail.com> | 2015-10-29 02:17:30 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-10-30 07:23:35 -0400 |
commit | 3a7bde55a11c4a22a6ccfc487993d621ae8e3688 (patch) | |
tree | 3a9eefdd713211abe2e81e308cc679d3bd5b2c7c /net/switchdev | |
parent | 740215ddb5b3faa0006505de073654cc50e9a299 (diff) |
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>
Diffstat (limited to 'net/switchdev')
-rw-r--r-- | net/switchdev/switchdev.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c index 8950d39af341..d6b4a84a4a79 100644 --- a/net/switchdev/switchdev.c +++ b/net/switchdev/switchdev.c | |||
@@ -869,7 +869,7 @@ static int switchdev_port_br_afspec(struct net_device *dev, | |||
869 | err = f(dev, &vlan.obj); | 869 | err = f(dev, &vlan.obj); |
870 | if (err) | 870 | if (err) |
871 | return err; | 871 | return err; |
872 | memset(&vlan, 0, sizeof(vlan)); | 872 | vlan.vid_begin = 0; |
873 | } else { | 873 | } else { |
874 | if (vlan.vid_begin) | 874 | if (vlan.vid_begin) |
875 | return -EINVAL; | 875 | return -EINVAL; |
@@ -878,7 +878,7 @@ static int switchdev_port_br_afspec(struct net_device *dev, | |||
878 | err = f(dev, &vlan.obj); | 878 | err = f(dev, &vlan.obj); |
879 | if (err) | 879 | if (err) |
880 | return err; | 880 | return err; |
881 | memset(&vlan, 0, sizeof(vlan)); | 881 | vlan.vid_begin = 0; |
882 | } | 882 | } |
883 | } | 883 | } |
884 | 884 | ||