From: Sasha Levin <Alexander.Levin@microsoft.com>
To: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"stable@vger.kernel.org" <stable@vger.kernel.org>
Cc: zhangliping <zhangliping02@baidu.com>,
"David S . Miller" <davem@davemloft.net>,
Sasha Levin <Alexander.Levin@microsoft.com>
Subject: [PATCH AUTOSEL for 4.4 13/35] openvswitch: fix the incorrect flow action alloc size
Date: Wed, 24 Jan 2018 04:16:58 +0000 [thread overview]
Message-ID: <20180124041645.32420-13-alexander.levin@microsoft.com> (raw)
In-Reply-To: <20180124041645.32420-1-alexander.levin@microsoft.com>
From: zhangliping <zhangliping02@baidu.com>
[ Upstream commit 67c8d22a73128ff910e2287567132530abcf5b71 ]
If we want to add a datapath flow, which has more than 500 vxlan outputs'
action, we will get the following error reports:
openvswitch: netlink: Flow action size 32832 bytes exceeds max
openvswitch: netlink: Flow action size 32832 bytes exceeds max
openvswitch: netlink: Actions may not be safe on all matching packets
... ...
It seems that we can simply enlarge the MAX_ACTIONS_BUFSIZE to fix it, but
this is not the root cause. For example, for a vxlan output action, we need
about 60 bytes for the nlattr, but after it is converted to the flow
action, it only occupies 24 bytes. This means that we can still support
more than 1000 vxlan output actions for a single datapath flow under the
the current 32k max limitation.
So even if the nla_len(attr) is larger than MAX_ACTIONS_BUFSIZE, we
shouldn't report EINVAL and keep it move on, as the judgement can be
done by the reserve_sfa_size.
Signed-off-by: zhangliping <zhangliping02@baidu.com>
Acked-by: Pravin B Shelar <pshelar@ovn.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
---
net/openvswitch/flow_netlink.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/net/openvswitch/flow_netlink.c b/net/openvswitch/flow_netlink.c
index d26b28def310..21e4d339217e 100644
--- a/net/openvswitch/flow_netlink.c
+++ b/net/openvswitch/flow_netlink.c
@@ -1672,14 +1672,11 @@ int ovs_nla_put_mask(const struct sw_flow *flow, struct sk_buff *skb)
#define MAX_ACTIONS_BUFSIZE (32 * 1024)
-static struct sw_flow_actions *nla_alloc_flow_actions(int size, bool log)
+static struct sw_flow_actions *nla_alloc_flow_actions(int size)
{
struct sw_flow_actions *sfa;
- if (size > MAX_ACTIONS_BUFSIZE) {
- OVS_NLERR(log, "Flow action size %u bytes exceeds max", size);
- return ERR_PTR(-EINVAL);
- }
+ WARN_ON_ONCE(size > MAX_ACTIONS_BUFSIZE);
sfa = kmalloc(sizeof(*sfa) + size, GFP_KERNEL);
if (!sfa)
@@ -1752,12 +1749,15 @@ static struct nlattr *reserve_sfa_size(struct sw_flow_actions **sfa,
new_acts_size = ksize(*sfa) * 2;
if (new_acts_size > MAX_ACTIONS_BUFSIZE) {
- if ((MAX_ACTIONS_BUFSIZE - next_offset) < req_size)
+ if ((MAX_ACTIONS_BUFSIZE - next_offset) < req_size) {
+ OVS_NLERR(log, "Flow action size exceeds max %u",
+ MAX_ACTIONS_BUFSIZE);
return ERR_PTR(-EMSGSIZE);
+ }
new_acts_size = MAX_ACTIONS_BUFSIZE;
}
- acts = nla_alloc_flow_actions(new_acts_size, log);
+ acts = nla_alloc_flow_actions(new_acts_size);
if (IS_ERR(acts))
return (void *)acts;
@@ -2369,7 +2369,7 @@ int ovs_nla_copy_actions(struct net *net, const struct nlattr *attr,
{
int err;
- *sfa = nla_alloc_flow_actions(nla_len(attr), log);
+ *sfa = nla_alloc_flow_actions(min(nla_len(attr), MAX_ACTIONS_BUFSIZE));
if (IS_ERR(*sfa))
return PTR_ERR(*sfa);
--
2.11.0
next prev parent reply other threads:[~2018-01-24 4:19 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-24 4:16 [PATCH AUTOSEL for 4.4 01/35] KVM: x86: emulator: Return to user-mode on L1 CPL=0 emulation failure Sasha Levin
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 02/35] KVM: x86: Don't re-execute instruction when not passing CR2 value Sasha Levin
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 04/35] KVM: x86: ioapic: Fix level-triggered EOI and IOAPIC reconfigure race Sasha Levin
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 03/35] KVM: X86: Fix operand/address-size during instruction decoding Sasha Levin
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 05/35] KVM: x86: ioapic: Clear Remote IRR when entry is switched to edge-triggered Sasha Levin
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 06/35] KVM: x86: ioapic: Preserve read-only values in the redirection table Sasha Levin
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 08/35] cpufreq: Add Loongson machine dependencies Sasha Levin
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 07/35] ACPI / bus: Leave modalias empty for devices which are not present Sasha Levin
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 10/35] drm/amdgpu: Fix SDMA load/unload sequence on HWS disabled mode Sasha Levin
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 09/35] bcache: check return value of register_shrinker Sasha Levin
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 11/35] drm/amdkfd: Fix SDMA ring buffer size calculation Sasha Levin
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 12/35] drm/amdkfd: Fix SDMA oversubsription handling Sasha Levin
2018-01-24 4:16 ` Sasha Levin [this message]
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 15/35] btrfs: fix deadlock when writing out space cache Sasha Levin
2018-01-24 4:16 ` [PATCH AUTOSEL for 4.4 14/35] mac80211: fix the update of path metric for RANN frame Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 16/35] KVM: VMX: Fix rflags cache during vCPU reset Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 17/35] xen-netfront: remove warning when unloading module Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 18/35] nfsd: CLOSE SHOULD return the invalid special stateid for NFSv4.x (x>0) Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 19/35] nfsd: Ensure we don't recognise lock stateids after freeing them Sasha Levin
2018-01-24 15:48 ` J. Bruce Fields
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 20/35] nfsd: Ensure we check stateid validity in the seqid operation checks Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 21/35] grace: replace BUG_ON by WARN_ONCE in exit_net hook Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 22/35] nfsd: check for use of the closed special stateid Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 23/35] lockd: fix "list_add double add" caused by legacy signal interface Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 24/35] hwmon: (pmbus) Use 64bit math for DIRECT format values Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 25/35] net: ethernet: xilinx: Mark XILINX_LL_TEMAC broken on 64-bit Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 26/35] quota: Check for register_shrinker() failure Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 27/35] SUNRPC: Allow connect to return EHOSTUNREACH Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 29/35] drm/omap: Fix error handling path in 'omap_dmm_probe()' Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 28/35] kmemleak: add scheduling point to kmemleak_scan() Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 31/35] scsi: aacraid: Prevent crash in case of free interrupt during scsi EH path Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 30/35] xfs: ubsan fixes Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 33/35] media: usbtv: add a new usbid Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 32/35] scsi: ufs: ufshcd: fix potential NULL pointer dereference in ufshcd_config_vreg Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 35/35] staging: rtl8188eu: Fix incorrect response to SIOCGIWESSID Sasha Levin
2018-01-24 4:17 ` [PATCH AUTOSEL for 4.4 34/35] usb: gadget: don't dereference g until after it has been null checked Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180124041645.32420-13-alexander.levin@microsoft.com \
--to=alexander.levin@microsoft.com \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=zhangliping02@baidu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).