On Tue, Jul 22, 2014 at 11:36 PM, Alex Wang <al...@nicira.com> wrote: > Commit 62974663fe (datapath/flow_netlink: Create right mask with > disabled megaflows) introduced the bug which caused > ovs_nla_get_match() returns immediately after parsing the flow > mask for OVS_KEY_ATTR_ENCAP. Consequently, when vlan encapsulated > packets are present, the corresponding datapath flows will have > incorrect mask like below. And the incorrect flows could affect > other non-vlan packets. > > ~/ovs# ovs-dpctl dump-flows > in_port(3/0xffff0000),eth_type(0x8100),encap(), packets:0, > bytes:0, used:never, actions:2 > > This commit fixes the bug by checking and handling the return > value of the parsing function correctly. > > Signed-off-by: Alex Wang <al...@nicira.com>
Thanks for fixing it. Acked-by: Pravin B Shelar <pshe...@nicira.com> > --- > datapath/flow_netlink.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/datapath/flow_netlink.c b/datapath/flow_netlink.c > index 5f975a1..445fa88 100644 > --- a/datapath/flow_netlink.c > +++ b/datapath/flow_netlink.c > @@ -938,7 +938,8 @@ int ovs_nla_get_match(struct sw_flow_match *match, > mask_attrs &= ~(1ULL << > OVS_KEY_ATTR_ETHERTYPE); > encap = a[OVS_KEY_ATTR_ENCAP]; > err = parse_flow_mask_nlattrs(encap, a, > &mask_attrs); > - goto free_newmask; > + if (err) > + goto free_newmask; > } else { > OVS_NLERR("VLAN frames must have an exact > match on the TPID (mask=%x).\n", > ntohs(eth_type)); > -- > 1.7.9.5 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev