From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-858731-1516768155-2-13622289242502182598 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=1516768155; b=kXuUPkkUMM+W28LA+cuLrf2WxT1QeZ9r0szzyTXHKyvGlvs VeEG4Y+Zq4qPTQYtkUzmSKDyDsHCDewUg7t10A7521E7/JQAVpLjBOZ8wE/l1fMi F9JvItC6XDCGC9lfzof3rDc6v8iqPhsF4dEhUdMff5H4hFH75h9QPasNi2ZJbUIm UXPnG57pBswjfMV3t/s3EmdEXTgaDbWtD6ntTy8QR7dqTKTkkk68MYH8+Aso1GPv 8CEpBORgJ5nMjjDBtU1BRIo6X8Wi7DvshbSrGpPzCmAB3a964SSzeOCZhYvHGB6S kGjBaHbN8bYTB6K37xy5j3uSUYfMDm8rBUgFpEA== 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=1516768155; bh=0Ozbpb cacx+5knNae4rdxL993k0f9q4io1vvETBZHjo=; b=dXR2RwlC1WkH7ZNpc809k8 /x6XZYQ9HN8T6obklmDOltDFLEMwR8eHxmiAUStEPU+fTfwGCj/s6pWtme3U7MIP xlUmip1QFV+1mOuU+/vVuVRQCDQuzDkYPbKg+sHgsUEIMYixpvzPwniXJ4FyBJKK r3WAGdHIhFZTaIAlJc6VMzL+75htr7xsffFeUObHNI+flBxOHBlHaWFignTo4bSB y0FsyfGkXSs3nKTJrdwzgJI2t8md7HEeeWFV9tgatHIesXr2plzsOm+x4eqjMwd0 SLUfi5xxpcEr2po9T+1GmAkLHFSQg4HrnQYr/MfQwGEEHW2jMSMVKFRESPupPNHg == ARC-Authentication-Results: i=1; mx1.messagingengine.com; arc=none (no signatures found); dkim=pass (1024-bit rsa key sha256) header.d=microsoft.com header.i=@microsoft.com header.b=CePnjraH 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: mx1.messagingengine.com; arc=none (no signatures found); dkim=pass (1024-bit rsa key sha256) header.d=microsoft.com header.i=@microsoft.com header.b=CePnjraH 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 S933192AbeAXE26 (ORCPT ); Tue, 23 Jan 2018 23:28:58 -0500 Received: from mail-dm3nam03on0111.outbound.protection.outlook.com ([104.47.41.111]:38880 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933187AbeAXETY (ORCPT ); Tue, 23 Jan 2018 23:19:24 -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.4 13/35] openvswitch: fix the incorrect flow action alloc size Thread-Topic: [PATCH AUTOSEL for 4.4 13/35] openvswitch: fix the incorrect flow action alloc size Thread-Index: AQHTlMotfHeFOuXrhkm1pRjO4izJng== Date: Wed, 24 Jan 2018 04:16:58 +0000 Message-ID: <20180124041645.32420-13-alexander.levin@microsoft.com> References: <20180124041645.32420-1-alexander.levin@microsoft.com> In-Reply-To: <20180124041645.32420-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;DM5PR2101MB1094;7:UQUy+ypB93EG+MDiloTx/pNtwewNBbwQbDopCLj/Pu6RrW61eO//keCvpVlxRP6saTfLTGa/NyiXbIq/i10UJYr/EMwERtQsKAyGuEf97+qd/UNyYf61r68msRfLTOSWs4MO1KwodxBIjEAH2ZBA/KmxnzMNStEo8pdRf83iN5548jz8cTBDDIEIBBdUD4DcqGM5w9bybFEa/y7fJOd+44btIBX8RBzZrhoeTgPt5bhzhjfwMzc7hEUkzUCy8Rg9 x-ms-office365-filtering-correlation-id: 95a23336-1c82-4651-6581-08d562e1a3e1 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:DM5PR2101MB1094; x-ms-traffictypediagnostic: DM5PR2101MB1094: 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)(3231046)(2400081)(944501161)(10201501046)(3002001)(93006095)(93001095)(6055026)(61426038)(61427038)(6041288)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123564045)(6072148)(201708071742011);SRVR:DM5PR2101MB1094;BCL:0;PCL:0;RULEID:;SRVR:DM5PR2101MB1094; x-forefront-prvs: 056297E276 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(346002)(376002)(396003)(366004)(39860400002)(39380400002)(199004)(189003)(14454004)(99286004)(10090500001)(2906002)(86612001)(2900100001)(2950100002)(107886003)(5250100002)(2501003)(26005)(316002)(4326008)(97736004)(54906003)(106356001)(110136005)(25786009)(6666003)(5660300001)(36756003)(305945005)(86362001)(8936002)(3280700002)(6116002)(68736007)(102836004)(3660700001)(6512007)(10290500003)(72206003)(1076002)(105586002)(6436002)(22452003)(53936002)(478600001)(3846002)(7736002)(6486002)(6346003)(81156014)(66066001)(6506007)(8676002)(76176011)(81166006)(22906009)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:DM5PR2101MB1094;H:DM5PR2101MB1032.namprd21.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alexander.Levin@microsoft.com; x-microsoft-antispam-message-info: 7pqRGsA9CwmaDGKKp4Jn5bEc1KlCXJAWtv/PfTuaIM55b7J4I4XCQX9pTYWH/fUoKea4tZqngiUBTnn1A9XzGg== 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: 95a23336-1c82-4651-6581-08d562e1a3e1 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jan 2018 04:16:58.7298 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR2101MB1094 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 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, 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) @@ -1752,12 +1749,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 @@ -2369,7 +2369,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