From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-901460-1516768891-2-6892743880892000036 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='US', FromHeader='com', MailFrom='org', XOriginatingCountry='US' X-Spam-charsets: plain='iso-8859-1' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: stable-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1516768890; b=dmS8jczuNJ7/Up+O9NJUrlfc46o95ALM/yos3psojwiKJ28 GxIURF4EF4hMX4EP5islL11r5qAxQ2xXJGYCvggNtOyRk8l5NHi0Pt2epqcX9ZS2 i2xbCCWlftEcjIZ0Tu2dqesGYMKeto+GRxl84+UqpjdB/ByW71y2OnBk+C4bB6tc eR0nlawxqVHbIyV9xhou8TjItQCmUmCuPWOGRZXjhZyi9bOAozMbGj5jPfCKo3nq 8mIAuKf2+yuHJ4B3SSwOdpZYglvHDIxfxLA8JJ7ce8wJ1ik1K+1nhHuFr8ncBuh8 +tKqPhbNrmvND2ktBgkkJZ29lzZ4h1qYBaBHkyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :references:in-reply-to:content-type:content-transfer-encoding :mime-version:sender:list-id; s=arctest; t=1516768890; bh=Q8yde3 EIntlmGAzbN2hMW2/oaQ4j0IAmIZMCopRPy2w=; b=nVYlZ8zP3lGhiFQEdFVfuv NyoqT4pbmOEv4YVf6bPb8IrTqHuv4LyCgL9XekLfLwU7Nmj5ib3XPaHaM8qz5ouW LDr17jdpdXWlLSnIYcN6tcorflsilGzAK0mD82E8jbNjxOCq09esp6T4CeEg2DsM b0saiXN4pae8weBiUvtsF4ACHcg7EEroakAe2j4WAvKehyzvFWhcR0/7efCVOzL6 aLwZHOLXyyh1ThCSdcyexhLAJkvtDYQICmugzJF5oNjXiNpUGKIKt0WJ28Co09DL PcPRpuIR/klT1SV7i89NPt7Tu6AObWY4E0Joby7VI0XLE+safU8KVx66TgSvPCRA == ARC-Authentication-Results: i=1; mx4.messagingengine.com; arc=none (no signatures found); dkim=pass (1024-bit rsa key sha256) header.d=microsoft.com header.i=@microsoft.com header.b=A6WF8lOF x-bits=1024 x-keytype=rsa x-algorithm=sha256 x-selector=selector1; dmarc=pass (p=reject,has-list-id=yes,d=none) header.from=microsoft.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=microsoft.com header.result=pass header_is_org_domain=yes Authentication-Results: mx4.messagingengine.com; arc=none (no signatures found); dkim=pass (1024-bit rsa key sha256) header.d=microsoft.com header.i=@microsoft.com header.b=A6WF8lOF x-bits=1024 x-keytype=rsa x-algorithm=sha256 x-selector=selector1; dmarc=pass (p=reject,has-list-id=yes,d=none) header.from=microsoft.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=stable-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=microsoft.com header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932504AbeAXEl0 (ORCPT ); Tue, 23 Jan 2018 23:41:26 -0500 Received: from mail-cys01nam02on0137.outbound.protection.outlook.com ([104.47.37.137]:21245 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932701AbeAXEQz (ORCPT ); Tue, 23 Jan 2018 23:16:55 -0500 From: Sasha Levin To: "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" CC: zhangliping , "David S . Miller" , Sasha Levin Subject: [PATCH AUTOSEL for 4.9 16/55] openvswitch: fix the incorrect flow action alloc size Thread-Topic: [PATCH AUTOSEL for 4.9 16/55] openvswitch: fix the incorrect flow action alloc size Thread-Index: AQHTlMn8D7sD02NdYEebLtZKQ5wUMA== Date: Wed, 24 Jan 2018 04:15:36 +0000 Message-ID: <20180124041521.32223-16-alexander.levin@microsoft.com> References: <20180124041521.32223-1-alexander.levin@microsoft.com> In-Reply-To: <20180124041521.32223-1-alexander.levin@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM5PR2101MB1080;7:/8uBJpeMOXnmAjlIUzcVM3mWYPxnnurXuGeAcEopUDvbFKTWJjRBVB1wt28wbQwig7w3qmoamaYI1cHNmuEXLE0c1JF7qomiO5gTEwMX9ETAosNAp7DCl+2TyJPMOGCskVhpBuGc3dC+LTPJcaLMMGRHirMhDaqW9s4hUsnfbj82rn2fg50OuLFadMhowKcE+rZzzC8Q192zfyGUruSBcAgV3ecoaK2PciBVRE6Hz6ncjIshQVvoWwuAtJh64LYz x-ms-office365-filtering-correlation-id: d6b2756b-05cb-4ab7-76fd-08d562e149f0 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4604075)(3008032)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603307)(7193020);SRVR:DM5PR2101MB1080; x-ms-traffictypediagnostic: DM5PR2101MB1080: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(20558992708506)(89211679590171)(210246017326159); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(61425038)(6040501)(2401047)(8121501046)(5005006)(3002001)(10201501046)(3231046)(2400081)(944501161)(93006095)(93001095)(6055026)(61426038)(61427038)(6041288)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);SRVR:DM5PR2101MB1080;BCL:0;PCL:0;RULEID:;SRVR:DM5PR2101MB1080; x-forefront-prvs: 056297E276 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(376002)(396003)(346002)(39860400002)(39380400002)(366004)(189003)(199004)(72206003)(110136005)(316002)(5250100002)(6346003)(2900100001)(54906003)(1076002)(6116002)(3846002)(22452003)(36756003)(53936002)(99286004)(6512007)(68736007)(2501003)(3660700001)(14454004)(3280700002)(86362001)(102836004)(7736002)(5660300001)(305945005)(107886003)(6486002)(6506007)(2906002)(81156014)(26005)(25786009)(4326008)(81166006)(105586002)(8936002)(106356001)(478600001)(10290500003)(6436002)(8676002)(2950100002)(86612001)(97736004)(76176011)(6666003)(10090500001)(66066001)(22906009)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:DM5PR2101MB1080;H:DM5PR2101MB1032.namprd21.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alexander.Levin@microsoft.com; x-microsoft-antispam-message-info: nAqkgeEVu3+IsdPucE5zQFfJW91UlUidTtaWTOWBct7g6zBCX48KieOEQyazuWWugKZzfVTPxuaA0/jr1GfUeg== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: d6b2756b-05cb-4ab7-76fd-08d562e149f0 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jan 2018 04:15:36.8642 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR2101MB1080 Sender: stable-owner@vger.kernel.org X-Mailing-List: stable@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: From: zhangliping [ 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 Acked-by: Pravin B Shelar Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- 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 07925418c2a5..1668916bdbde 100644 --- a/net/openvswitch/flow_netlink.c +++ b/net/openvswitch/flow_netlink.c @@ -1789,14 +1789,11 @@ int ovs_nla_put_mask(const struct sw_flow *flow, st= ruct sk_buff *skb) =20 #define MAX_ACTIONS_BUFSIZE (32 * 1024) =20 -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; =20 - 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); =20 sfa =3D kmalloc(sizeof(*sfa) + size, GFP_KERNEL); if (!sfa) @@ -1869,12 +1866,15 @@ static struct nlattr *reserve_sfa_size(struct sw_fl= ow_actions **sfa, new_acts_size =3D ksize(*sfa) * 2; =20 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 =3D MAX_ACTIONS_BUFSIZE; } =20 - acts =3D nla_alloc_flow_actions(new_acts_size, log); + acts =3D nla_alloc_flow_actions(new_acts_size); if (IS_ERR(acts)) return (void *)acts; =20 @@ -2500,7 +2500,7 @@ int ovs_nla_copy_actions(struct net *net, const struc= t nlattr *attr, { int err; =20 - *sfa =3D nla_alloc_flow_actions(nla_len(attr), log); + *sfa =3D nla_alloc_flow_actions(min(nla_len(attr), MAX_ACTIONS_BUFSIZE)); if (IS_ERR(*sfa)) return PTR_ERR(*sfa); =20 --=20 2.11.0