diff options
| author | pravin shelar <pshelar@ovn.org> | 2016-09-19 16:50:59 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2016-09-20 22:54:35 -0400 |
| commit | 190aa3e77880a05332ea1ccb382a51285d57adb5 (patch) | |
| tree | 8b92a5b65576343d515d00afd06833dad0114418 /net/openvswitch | |
| parent | 204dfe1798bbfa242e4083b87c3a8c5200412e6f (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.c | 15 |
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 | ||
