On Tue, May 17, 2016 at 04:51:08PM +0200, Jiri Benc wrote: > On Wed, 4 May 2016 16:36:31 +0900, Simon Horman wrote: > > + /* Packets from user space for execution only have metadata key > > + * attributes. OVS_KEY_ATTR_PACKET_ETHERTYPE is then used to specify > > + * the starting layer of the packet. Packets with Ethernet headers > > + * have this attribute set to 0 > > + */ > > + if (*attrs & (1ULL << OVS_KEY_ATTR_PACKET_ETHERTYPE)) { > > + __be16 eth_type; > > + > > + if (is_mask) { > > + /* Always exact match packet EtherType */ > > + eth_type = htons(0xffff); > > + } else { > > + eth_type = > > nla_get_be16(a[OVS_KEY_ATTR_PACKET_ETHERTYPE]); > > + is_layer3 = ((eth_type == htons(ETH_P_IP)) || > > + (eth_type == htons(ETH_P_IPV6))); > > Unknown types need to be rejected, not treated as layer2, otherwise we > may run into problems later (with combination of this kernel + newer > user space) when we add more types, such as ETH_P_NSH.
I believe this is fixed by the following patch. Possibly it makes sense to squash that patch into and earlier patches.