bridge: vlan: enforce no pvid flag in vlan ranges
authorNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Sun, 11 Oct 2015 10:49:56 +0000 (12:49 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 13 Oct 2015 02:59:15 +0000 (19:59 -0700)
Currently it's possible for someone to send a vlan range to the kernel
with the pvid flag set which will result in the pvid bouncing from a
vlan to vlan and isn't correct, it also introduces problems for hardware
where it doesn't make sense having more than 1 pvid. iproute2 already
enforces this, so let's enforce it on kernel-side as well.

Reported-by: Elad Raz <eladr@mellanox.com>
Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_netlink.c

index 544ab966d47704639bf3def6addb36bf44f15e8a..d792d1a848ad09fde1c883867f058af0efb9d48c 100644 (file)
@@ -524,6 +524,9 @@ static int br_afspec(struct net_bridge *br,
                        if (vinfo_start)
                                return -EINVAL;
                        vinfo_start = vinfo;
+                       /* don't allow range of pvids */
+                       if (vinfo_start->flags & BRIDGE_VLAN_INFO_PVID)
+                               return -EINVAL;
                        continue;
                }