[ovs-dev] [PATCH 01/16] dpif-netdev: Fix validation of VLAN PCP value in userspace datapath.

Ben Pfaff blp at nicira.com
Thu Feb 11 23:18:03 UTC 2010


Reported-by: Jean Tourrilhes <jt at hpl.hp.com>
---
 lib/dpif-netdev.c |    2 +-
 lib/packets.h     |    3 +++
 2 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index e9f006c..1daa93b 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -752,7 +752,7 @@ dpif_netdev_validate_actions(const union odp_action *actions, int n_actions,
 
 		case ODPAT_SET_VLAN_PCP:
             *mutates = true;
-			if (a->vlan_pcp.vlan_pcp & ~VLAN_PCP_MASK) {
+			if (a->vlan_pcp.vlan_pcp & ~(VLAN_PCP_MASK >> VLAN_PCP_SHIFT)) {
 				return EINVAL;
             }
 			break;
diff --git a/lib/packets.h b/lib/packets.h
index 2c33078..f0ccfdb 100644
--- a/lib/packets.h
+++ b/lib/packets.h
@@ -179,7 +179,10 @@ struct llc_snap_header {
 BUILD_ASSERT_DECL(LLC_SNAP_HEADER_LEN == sizeof(struct llc_snap_header));
 
 #define VLAN_VID_MASK 0x0fff
+#define VLAN_VID_SHIFT 0
+
 #define VLAN_PCP_MASK 0xe000
+#define VLAN_PCP_SHIFT 13
 
 #define VLAN_HEADER_LEN 4
 struct vlan_header {
-- 
1.6.6.1





More information about the dev mailing list