|
@@ -122,7 +122,7 @@ bool __skb_flow_dissect(const struct sk_buff *skb,
|
|
|
struct flow_dissector_key_keyid *key_keyid;
|
|
|
bool skip_vlan = false;
|
|
|
u8 ip_proto = 0;
|
|
|
- bool ret = false;
|
|
|
+ bool ret;
|
|
|
|
|
|
if (!data) {
|
|
|
data = skb->data;
|
|
@@ -549,12 +549,17 @@ ip_proto_again:
|
|
|
out_good:
|
|
|
ret = true;
|
|
|
|
|
|
-out_bad:
|
|
|
+ key_control->thoff = (u16)nhoff;
|
|
|
+out:
|
|
|
key_basic->n_proto = proto;
|
|
|
key_basic->ip_proto = ip_proto;
|
|
|
- key_control->thoff = (u16)nhoff;
|
|
|
|
|
|
return ret;
|
|
|
+
|
|
|
+out_bad:
|
|
|
+ ret = false;
|
|
|
+ key_control->thoff = min_t(u16, nhoff, skb ? skb->len : hlen);
|
|
|
+ goto out;
|
|
|
}
|
|
|
EXPORT_SYMBOL(__skb_flow_dissect);
|
|
|
|