浏览代码

flow_dissector: do not break if ports are not needed in flowlabel

This restored previous behaviour. If caller does not want ports to be
filled, we should not break.

Fixes: 06635a35d13d ("flow_dissect: use programable dissector in skb_flow_dissect and friends")
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
Jiri Pirko 10 年之前
父节点
当前提交
12c227ec89
共有 1 个文件被更改,包括 7 次插入7 次删除
  1. 7 7
      net/core/flow_dissector.c

+ 7 - 7
net/core/flow_dissector.c

@@ -221,13 +221,13 @@ flow_label:
 			key_basic->ip_proto = ip_proto;
 			key_basic->ip_proto = ip_proto;
 			key_basic->thoff = (u16)nhoff;
 			key_basic->thoff = (u16)nhoff;
 
 
-			if (!skb_flow_dissector_uses_key(flow_dissector,
-							 FLOW_DISSECTOR_KEY_PORTS))
-				break;
-			key_ports = skb_flow_dissector_target(flow_dissector,
-							      FLOW_DISSECTOR_KEY_PORTS,
-							      target_container);
-			key_ports->ports = flow_label;
+			if (skb_flow_dissector_uses_key(flow_dissector,
+							FLOW_DISSECTOR_KEY_PORTS)) {
+				key_ports = skb_flow_dissector_target(flow_dissector,
+								      FLOW_DISSECTOR_KEY_PORTS,
+								      target_container);
+				key_ports->ports = flow_label;
+			}
 
 
 			return true;
 			return true;
 		}
 		}