[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1472762727-25844-5-git-send-email-e@erig.me>
Date: Thu, 1 Sep 2016 16:45:27 -0400
From: Eric Garver <e@...g.me>
To: netdev@...r.kernel.org
Cc: dev@...nvswitch.org, Thomas F Herbert <thomasfherbert@...il.com>,
Xiao Liang <shaw.leon@...il.com>
Subject: [PATCH net-next v21 4/4] openvswitch: report error on VLAN nlattr in ovs_key_from_nlattrs()
With 802.1ad support these are parsed and set upfront by
parse_vlan_from_nlattrs() before ovs_key_from_nlattrs() is ever called.
As such we should never see a VLAN attribute in ovs_key_from_nlattrs().
Signed-off-by: Eric Garver <e@...g.me>
---
net/openvswitch/flow_netlink.c | 19 +++++--------------
1 file changed, 5 insertions(+), 14 deletions(-)
diff --git a/net/openvswitch/flow_netlink.c b/net/openvswitch/flow_netlink.c
index fbe9e0e4792d..0f36aead744b 100644
--- a/net/openvswitch/flow_netlink.c
+++ b/net/openvswitch/flow_netlink.c
@@ -923,20 +923,11 @@ static int ovs_key_from_nlattrs(struct net *net, struct sw_flow_match *match,
}
if (attrs & (1 << OVS_KEY_ATTR_VLAN)) {
- __be16 tci;
-
- tci = nla_get_be16(a[OVS_KEY_ATTR_VLAN]);
- if (!(tci & htons(VLAN_TAG_PRESENT))) {
- if (is_mask)
- OVS_NLERR(log, "VLAN TCI mask does not have exact match for VLAN_TAG_PRESENT bit.");
- else
- OVS_NLERR(log, "VLAN TCI does not have VLAN_TAG_PRESENT bit set.");
-
- return -EINVAL;
- }
-
- SW_FLOW_KEY_PUT(match, eth.vlan.tci, tci, is_mask);
- attrs &= ~(1 << OVS_KEY_ATTR_VLAN);
+ /* VLAN attribute is always parsed before getting here since it may
+ * occur multiple times.
+ */
+ OVS_NLERR(log, "VLAN attribute unexpected.");
+ return -EINVAL;
}
if (attrs & (1 << OVS_KEY_ATTR_ETHERTYPE)) {
--
2.5.5
Powered by blists - more mailing lists