diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c index ce9eeeb7c024c8ab98ca77a03317105c73b8e108..415b95f76b66275c3c1ded6be792757af3cf45ce 100644 --- a/net/core/flow_dissector.c +++ b/net/core/flow_dissector.c @@ -1026,8 +1026,8 @@ bool __skb_flow_dissect(const struct sk_buff *skb, break; } - if (dissector_uses_key(flow_dissector, - FLOW_DISSECTOR_KEY_PORTS)) { + if (dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_PORTS) && + !(key_control->flags & FLOW_DIS_IS_FRAGMENT)) { key_ports = skb_flow_dissector_target(flow_dissector, FLOW_DISSECTOR_KEY_PORTS, target_container);