switchdev: fix: erasing too much of vlan obj when handling multiple vlan specs
authorScott Feldman <[email protected]>
Thu, 29 Oct 2015 06:17:30 +0000 (23:17 -0700)
committerDavid S. Miller <[email protected]>
Fri, 30 Oct 2015 11:23:35 +0000 (20:23 +0900)
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 <[email protected]>
Acked-by: Jiri Pirko <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
net/switchdev/switchdev.c

index 8950d39af34182a2fd433676c03a459dfc5cf3e4..d6b4a84a4a7974ae9e25b510ef35a95003a4eaf5 100644 (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;
                }
        }