summaryrefslogtreecommitdiffstats
path: root/net/openvswitch
diff options
context:
space:
mode:
Diffstat (limited to 'net/openvswitch')
-rw-r--r--net/openvswitch/flow.c8
-rw-r--r--net/openvswitch/flow_netlink.c2
2 files changed, 6 insertions, 4 deletions
diff --git a/net/openvswitch/flow.c b/net/openvswitch/flow.c
index 57e07768c9d1..f54cf17ef7a8 100644
--- a/net/openvswitch/flow.c
+++ b/net/openvswitch/flow.c
@@ -276,10 +276,12 @@ static int parse_ipv6hdr(struct sk_buff *skb, struct sw_flow_key *key)
276 276
277 nexthdr = ipv6_find_hdr(skb, &payload_ofs, -1, &frag_off, &flags); 277 nexthdr = ipv6_find_hdr(skb, &payload_ofs, -1, &frag_off, &flags);
278 if (flags & IP6_FH_F_FRAG) { 278 if (flags & IP6_FH_F_FRAG) {
279 if (frag_off) 279 if (frag_off) {
280 key->ip.frag = OVS_FRAG_TYPE_LATER; 280 key->ip.frag = OVS_FRAG_TYPE_LATER;
281 else 281 key->ip.proto = nexthdr;
282 key->ip.frag = OVS_FRAG_TYPE_FIRST; 282 return 0;
283 }
284 key->ip.frag = OVS_FRAG_TYPE_FIRST;
283 } else { 285 } else {
284 key->ip.frag = OVS_FRAG_TYPE_NONE; 286 key->ip.frag = OVS_FRAG_TYPE_NONE;
285 } 287 }
diff --git a/net/openvswitch/flow_netlink.c b/net/openvswitch/flow_netlink.c
index 435a4bdf8f89..691da853bef5 100644
--- a/net/openvswitch/flow_netlink.c
+++ b/net/openvswitch/flow_netlink.c
@@ -500,7 +500,7 @@ static int __parse_flow_nlattrs(const struct nlattr *attr,
500 return -EINVAL; 500 return -EINVAL;
501 } 501 }
502 502
503 if (!nz || !is_all_zero(nla_data(nla), expected_len)) { 503 if (!nz || !is_all_zero(nla_data(nla), nla_len(nla))) {
504 attrs |= 1 << type; 504 attrs |= 1 << type;
505 a[type] = nla; 505 a[type] = nla;
506 } 506 }