aboutsummaryrefslogtreecommitdiffstats
path: root/net/openvswitch
diff options
context:
space:
mode:
authorpravin shelar <pshelar@ovn.org>2016-09-19 16:50:59 -0400
committerDavid S. Miller <davem@davemloft.net>2016-09-20 22:54:35 -0400
commit190aa3e77880a05332ea1ccb382a51285d57adb5 (patch)
tree8b92a5b65576343d515d00afd06833dad0114418 /net/openvswitch
parent204dfe1798bbfa242e4083b87c3a8c5200412e6f (diff)
openvswitch: Fix Frame-size larger than 1024 bytes warning.
There is no need to declare separate key on stack, we can just use sw_flow->key to store the key directly. This commit fixes following warning: net/openvswitch/datapath.c: In function ‘ovs_flow_cmd_new’: net/openvswitch/datapath.c:1080:1: warning: the frame size of 1040 bytes is larger than 1024 bytes [-Wframe-larger-than=] Signed-off-by: Pravin B Shelar <pshelar@ovn.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/openvswitch')
-rw-r--r--net/openvswitch/datapath.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 0536ab3504d5..474e7a6bfeb7 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -928,7 +928,6 @@ static int ovs_flow_cmd_new(struct sk_buff *skb, struct genl_info *info)
928 struct sw_flow_mask mask; 928 struct sw_flow_mask mask;
929 struct sk_buff *reply; 929 struct sk_buff *reply;
930 struct datapath *dp; 930 struct datapath *dp;
931 struct sw_flow_key key;
932 struct sw_flow_actions *acts; 931 struct sw_flow_actions *acts;
933 struct sw_flow_match match; 932 struct sw_flow_match match;
934 u32 ufid_flags = ovs_nla_get_ufid_flags(a[OVS_FLOW_ATTR_UFID_FLAGS]); 933 u32 ufid_flags = ovs_nla_get_ufid_flags(a[OVS_FLOW_ATTR_UFID_FLAGS]);
@@ -956,20 +955,24 @@ static int ovs_flow_cmd_new(struct sk_buff *skb, struct genl_info *info)
956 } 955 }
957 956
958 /* Extract key. */ 957 /* Extract key. */
959 ovs_match_init(&match, &key, &mask); 958 ovs_match_init(&match, &new_flow->key, &mask);
960 error = ovs_nla_get_match(net, &match, a[OVS_FLOW_ATTR_KEY], 959 error = ovs_nla_get_match(net, &match, a[OVS_FLOW_ATTR_KEY],
961 a[OVS_FLOW_ATTR_MASK], log); 960 a[OVS_FLOW_ATTR_MASK], log);
962 if (error) 961 if (error)
963 goto err_kfree_flow; 962 goto err_kfree_flow;
964 963
965 ovs_flow_mask_key(&new_flow->key, &key, true, &mask);
966
967 /* Extract flow identifier. */ 964 /* Extract flow identifier. */
968 error = ovs_nla_get_identifier(&new_flow->id, a[OVS_FLOW_ATTR_UFID], 965 error = ovs_nla_get_identifier(&new_flow->id, a[OVS_FLOW_ATTR_UFID],
969 &key, log); 966 &new_flow->key, log);
970 if (error) 967 if (error)
971 goto err_kfree_flow; 968 goto err_kfree_flow;
972 969
970 /* unmasked key is needed to match when ufid is not used. */
971 if (ovs_identifier_is_key(&new_flow->id))
972 match.key = new_flow->id.unmasked_key;
973
974 ovs_flow_mask_key(&new_flow->key, &new_flow->key, true, &mask);
975
973 /* Validate actions. */ 976 /* Validate actions. */
974 error = ovs_nla_copy_actions(net, a[OVS_FLOW_ATTR_ACTIONS], 977 error = ovs_nla_copy_actions(net, a[OVS_FLOW_ATTR_ACTIONS],
975 &new_flow->key, &acts, log); 978 &new_flow->key, &acts, log);
@@ -996,7 +999,7 @@ static int ovs_flow_cmd_new(struct sk_buff *skb, struct genl_info *info)
996 if (ovs_identifier_is_ufid(&new_flow->id)) 999 if (ovs_identifier_is_ufid(&new_flow->id))
997 flow = ovs_flow_tbl_lookup_ufid(&dp->table, &new_flow->id); 1000 flow = ovs_flow_tbl_lookup_ufid(&dp->table, &new_flow->id);
998 if (!flow) 1001 if (!flow)
999 flow = ovs_flow_tbl_lookup(&dp->table, &key); 1002 flow = ovs_flow_tbl_lookup(&dp->table, &new_flow->key);
1000 if (likely(!flow)) { 1003 if (likely(!flow)) {
1001 rcu_assign_pointer(new_flow->sf_acts, acts); 1004 rcu_assign_pointer(new_flow->sf_acts, acts);
1002 1005