From: Ben Pfaff Date: Thu, 11 Feb 2010 21:51:56 +0000 (-0800) Subject: dpif-netdev: Fix validation of VLAN PCP value in userspace datapath. X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=33ce24ed460797596b14c9ec89e4eb7de262ba4d;p=ovs.git dpif-netdev: Fix validation of VLAN PCP value in userspace datapath. Reported-by: Jean Tourrilhes --- diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index e9f006c34..1daa93b29 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 2c33078f2..f0ccfdb9e 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 {