From: Scott Feldman Date: Thu, 29 Oct 2015 06:17:30 +0000 (-0700) Subject: switchdev: fix: erasing too much of vlan obj when handling multiple vlan specs X-Git-Tag: firefly_0821_release~176^2~818^2~41 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=3a7bde55a11c4a22a6ccfc487993d621ae8e3688;p=firefly-linux-kernel-4.4.55.git 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 Acked-by: Jiri Pirko Signed-off-by: David S. Miller --- 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, 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; } }