diff mbox

[net-next,1/3] switchdev: fix: erasing too much of vlan obj when handling multiple vlan specs

Message ID 1445369799-2345-1-git-send-email-sfeldma@gmail.com
State Superseded, archived
Delegated to: David Miller
Headers show

Commit Message

Scott Feldman Oct. 20, 2015, 7:36 p.m. UTC
From: Scott Feldman <sfeldma@gmail.com>

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>
---
 net/switchdev/switchdev.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Jiri Pirko Oct. 21, 2015, 7:46 a.m. UTC | #1
Tue, Oct 20, 2015 at 09:36:37PM CEST, sfeldma@gmail.com wrote:
>From: Scott Feldman <sfeldma@gmail.com>
>
>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>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c
index 73e3895..56d8479 100644
--- a/net/switchdev/switchdev.c
+++ b/net/switchdev/switchdev.c
@@ -863,7 +863,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;
@@ -872,7 +872,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;
 		}
 	}