From patchwork Sun Feb 26 09:09:46 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Talat Batheesh X-Patchwork-Id: 734200 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3vYDpp2b5qz9s7y; Wed, 1 Mar 2017 23:12:34 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="R5IUecIJ"; dkim-atps=neutral Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1cj37P-00060M-LX; Wed, 01 Mar 2017 12:12:31 +0000 Received: from mail-db5eur01on0040.outbound.protection.outlook.com ([104.47.2.40] helo=EUR01-DB5-obe.outbound.protection.outlook.com) by huckleberry.canonical.com with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1chuqP-0007ot-Dk for kernel-team@lists.canonical.com; Sun, 26 Feb 2017 09:10:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=7gNOWctnDn+tANG5xWHPd2GESZKR36Mp3KkKYMg7ogc=; b=R5IUecIJx8+CxG5Xt0lJV7lTFWmHbKk2FimeihdKxAjNN63uQSTRa7PZ+1Dptajm1Vzh5YuLEu77gHnCqRdvxDNzjjp0FkTeahsJ+ny8ZM7F0IIx2N1brprYp7sitS7k5twcP4wazlXvT2Heo+Zig/MMu6LLQXjF1JJ5PHYXOgM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=talatb@mellanox.com; Received: from dev-h-vrt-005.mth.labs.mlnx (193.47.165.251) by HE1PR05MB1306.eurprd05.prod.outlook.com (10.162.250.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.919.13; Sun, 26 Feb 2017 09:10:14 +0000 From: Talat Batheesh To: Subject: [PATCH 01/18] net/sched: cls_flower: Disallow duplicate internal elements Date: Sun, 26 Feb 2017 11:09:46 +0200 Message-ID: <1488100203-31976-1-git-send-email-talatb@mellanox.com> X-Mailer: git-send-email 2.5.0 MIME-Version: 1.0 X-Originating-IP: [193.47.165.251] X-ClientProxiedBy: AM4PR02CA0026.eurprd02.prod.outlook.com (10.165.239.164) To HE1PR05MB1306.eurprd05.prod.outlook.com (10.162.250.151) X-MS-Office365-Filtering-Correlation-Id: 4dd5df78-6494-4cec-4bab-08d45e2746f5 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:HE1PR05MB1306; X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 3:afMis0R4oLZzp1eFN8dH+7VvAnUoFveRf/SkRQmjOVnPinc3JAEfkwYQYxARpZQOWtXyifJRr3wi1fmr7TiZ4lMJw/yCkAwgZFDqdzMmKFygWlA0hjb4ateg9Qq7Yhwq0A2QbatcPDEIjNHkyQw32E6ofROOlPaR7iPdQGzko1+CgjbP684pgUIM9zxEhEc0y8Gf8/agwm37qlJsHF/EAX/ypjIEaZl2AWv9mkoAUuuuulKu13m9blaDxGjCzdcRZQopUuEY9STrt+/75dLB18F7UgOOBRCZOYSz1sHnklo=; 25:EuFfHWxVMIu2GLqSpSd4RwB1Rwg9Wf/dL1Qss3Ze46ucY2EDU6UoDpnt9UYsUOGxE1rg2D4btRUV1ayZjZpP/sESa/+Y1labvcmu6IX3hvEa+hhMIdAQsFOgVzhcgRdKxnSgjMUah+mMK2JbRODoBmstQMs7aumlXT82OsBFZLfDmxiazVK+iUU8Olv8kNVk9PffERuVo76JvRiTDe3P+ZD1W7WJ321ZIv4HQNfBSHQofDssSFoQNWsk3ISc4FJnknLdakkEq3vuzdyQ+/LhcAqHKGARDXxoExy3M+7niywUGYkZbLMyc5jiCrR9VqnmgS0vmeWEO4RMsuq65UdgV0fw3hulrcH4f70NiCrL76FfXo15umpRl5BbjiyaONzwGhnn/xkU6i3Sj4KcXPhfQjU34b0BuGWdUS1YSDAMGtWVL7W2gQ8VLXAxcLCkE5qkuNeIWCU+FmUshxQsIJxgBQ== X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 31:Wp2JTy4pHpjKjKoRFaL/vK+gp99Fo5d+Nest0bWNo7IAP8qDaFTfgWiv5jO77wEm7M6Nl+fUKDXPUW1iyKbu7gDCa0segTAoiP50icE28i+mmuQa/wHVuM2lh1QbbY2TO7N1C+0LDRH5zD8d109NPBKGWXoAsqjqwIoXNVPEeyJ/Cp9TtMkgWMqXsa2NqwGjYehyieN75bAsFbSCB9GgxP2vGI4Dh9I3FDJKFLjxYvMdhkjDYcJbUsIjN9Q5SCs9; 20:T+0MG6lMwFrtS3kIBSpHujiD8nBtceHgaDOEfSuaecGcDoppudNnWqw40JHt3dG17R1q80oUsmJyoISPWk9hfNnYPcQtdI7msghLuYXDe3cVTD34HuKfCgbQq0fDB4H2rlj86QYzPyrCmAoc4aRlWQtz/wpX3ZF4KUU6E6tT/pbkK/fccME68VQvlkcDzfLdCrX+hvcye5H4rQGaLNncOb4x6uqr7OjBdlzvVhFnadBRbjH+h1Yod24lcNTDQr9RPWK/SDjOc9nglvu5eQQgTq8UeOMc9MSX3+VbwQrEPcUs+b6rqhuD6oUARAPQprnMcPkD4QCGX5poVjaoqPTRtHs/ZR/BCxYkaQaI5uFLpe2oDF9z2Hzr3QQyV6eW6ONI8+hAT90dSZC3w1gcjoPQrgQ2fszz3W54geyZhf6eh2tJwNnvASF3zU9FeO7ANLWlK7xU41ZnXzU4kfv1JTbhN+7C55cjH433vFIpvnI3NOJl1mDFBGTUl7zJaw/4RqIM X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(211254476889703)(131327999870524)(24339691489775); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123558025)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(6072148); SRVR:HE1PR05MB1306; BCL:0; PCL:0; RULEID:; SRVR:HE1PR05MB1306; X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 4:C7WpBOlB+fBH5HSm1ILq/k4cvyOkoTE/aRQmsjcxPTCdjw8rYvPwcVEw8Ab2wC1+ja3ZiFeqwjvTdj0ogD6LSdHzjluJNWiCfNoP8/32TuN4+x2Ltuyg8EbH8Y2GO8SyqYox3/SBarGcvaDXwhaPKjAm0aK3EcGcYY/WNncLkKvrwcUyzMs9OymMApt8YRnes7Oh/IIRYHN8m3bpleCXMzLhGDl6iBtEQ4V8rlKEXYGyOPnWHC/RcWqWSEKrxKxDcBM35jxnnf2y8Xy/jpZLBc1ClgEH4idLIwpYcbHIXvHNHHixerUvTE18pgqygWk1gC8VU2t2mCE5mGP0JLIQbwt/1r3/FxBOo3WrEahzOIC/gOmswFb0AQhey+xcCyqSVEYzQdAs1k8pq0r3dzigusjtxtOYlvJHNrC/AX2IyHs+OJrXGYiPLEbpUKlaXhc/NcbF9gszssEZz53WlLd1jGgA2S8ozvhDuQu3NuxC8q8Z1IE4QnphV5ZlqZBFL3Uw0aN0peRfYKe5jiFsOMj/8yB1+5FDKXrCvZqGhY2ykf39xbwAC5++Dcf2ff708pmt+sUiGh9dhbd8na5IJ43VpwZ1rA/KjQZqBReeKNzJSI7Hk4zzHLsDZwb6nce4s/KcXCa2TqQr3Yo0FM6A87M22lT7gsNhO8n8P4lc8Pq1M8STt+e0i6FR+LzeU7GMbGUHnnM6aF4Jw1gFixYbyTFod9UPivPBOwb6hMgahWoE3E9i/bpKlrkNp4Uq9uaenq/b X-Forefront-PRVS: 0230B09AC4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(39410400002)(39450400003)(39850400002)(39840400002)(199003)(189002)(68736007)(81166006)(8676002)(6512007)(81156014)(50226002)(3846002)(6116002)(50466002)(6506006)(48376002)(66066001)(6306002)(25786008)(47776003)(6666003)(5003940100001)(6916009)(6486002)(36756003)(5660300001)(101416001)(189998001)(92566002)(7736002)(107886003)(110136004)(33646002)(97736004)(105586002)(38730400002)(106356001)(2351001)(305945005)(50986999)(4326007)(53936002)(2906002)(86362001)(42186005)(450100001); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR05MB1306; H:dev-h-vrt-005.mth.labs.mlnx; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR05MB1306; 23:duxaVBi2OnwotgJ1svSYw31AeNrMpzoaWhP8TGj+0?= =?us-ascii?Q?/Bfxhg5pk8fK26zg4nGIrPfYIhoahJ8r2Srg919NdNRh5FOwBYF9/qyMp50X?= =?us-ascii?Q?NqhpAglWbZHRXEmW2PUh1eEi485WGJ2WxmiakVueXQIGtG8/fWjX/PUFcqJV?= =?us-ascii?Q?UjArM642In0vLDDN6U29ZRxk3Oi3iG+bsoL6cxPinU6oj+C7iIJifSXqyazX?= =?us-ascii?Q?gFvDlL9HKtNpnH9faD/TLyT2Y7y3VA2LJDzCOipCF7P9AMljbe+DzWBKt1s5?= =?us-ascii?Q?OoW91rVsUb2N8/rG90ZN13sLVm0ZsqVQZmUeI1RCm1lRF0prz/7PbXRZT6Go?= =?us-ascii?Q?UNWwZTUi20GZZQRpq454f9jW1AA9re83hG7WOYfMFECHLzOp8IHBkKhqS7t0?= =?us-ascii?Q?LEAKgo/pHWq/WV0CXrRuoeSluxN53h2A6CI1J6nLy91Hw4JD7HIYINKFXq7G?= =?us-ascii?Q?UKo98qdLdPtJ96iS++tedkmj5dv8fnKfzgAC/u44nctn9JqgVTlOleH5i6ci?= =?us-ascii?Q?ygRjDDoOxXEYHhY55u0+HF6EbNPocxr9Ht7p+L3IqHkDG8I7OIXEzLpDDNak?= =?us-ascii?Q?sGWniHuHhhPqtoplplrBI9V90Pm6FqSjhkr1KraSd8h07JtH3f7t/DhFsq/M?= =?us-ascii?Q?a0h1/SpLkqkGlPqm4+mKZV+22yAAht6FvGnxsPXaa/lumdiDQQ9ySR7dJjp+?= =?us-ascii?Q?0Jn4uEKG98Bk646iV78PjzrYIb3sicA9aCuAt27LIG/t/hpnZqbibl7L9hQE?= =?us-ascii?Q?kDqYzmbSQ2JHZ+3hX+lblh/go1DwRD2bKKUxA2CyBnECkdkcpEv4FIs8asmK?= =?us-ascii?Q?DWMXlz7Z05TpF/KBa+SC6yLwpqiY3R7TzBOzZ1/xdSPo8MnxD4JwD895RuaV?= =?us-ascii?Q?sFTp9oOLiWN0FovYx9/EWzgQW7do3x5Ev+JGGehIMKm0vXWLi98S0FwcDE2Z?= =?us-ascii?Q?3NFxfbHAqcwBhk0wYzbIEriSORGNBuzfAgieidMKLPBePpwXMiGs181A2fTY?= =?us-ascii?Q?dLSR+ano20Bk6Zbome8TTjhzOJGHSRKeqCE28fS2oW6K9/2XAIEUXWt4d5mT?= =?us-ascii?Q?MeyJ8oaj9YfcYiKC4xzlB2HSFHvhHX1CB+7BIVv5CSzlshBlnOeMzgUAmiqq?= =?us-ascii?Q?Urpe7zgyuKa/L7frBTsDOS7kBNaVdD8M+WpBmKFZjBOBT1vixwo70V+4W0iv?= =?us-ascii?Q?fs8zkThKfVAU+JeGbWzoKqg7ZEVplh+IN1F?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 6:CUxNu9GiBeaD73mzPp65FpQerGsv/dGVMdFauUEi0ORPrU1ryetd1AECYULe4W0t7K0+0JRUiGeM2M6ra0S/Xx2s6F45FHaDZljTGGCZ9FTlOhCipZaLYc2SxSaILO/yxWJYTuO3y5cQRV3UtHEwehGR8kyZ6V/omchPF2kPOCX/UwjlydGP7+EKfDjuSwYX16ctASTFdfa7Uf3HXohfow+yDbUu5VIMZhm1wngQ74fFZOognV/Jmdo/Up9nnCc0gAn5WCbFxJ1cw/+qV0/WPu9UdsMk5CETqSmSQdg2+AtvY9kVdBv2Du5fDCTt9wvycV3hhXFZTQV3G5WMb3bqW8FmA/Ps7Kj9JdFeuxy7WQmLzvAoGAdam+F/Uv7NNn6Zo0uGzdRMswU9HmwWbEvGULAADhzFnmKILGrkT3LzBvE=; 5:x67UoA99+76wy4wRpECkArTkKHGKwpAt2NlT4TXIehUy2vXzZ9hQm7Aaebk7SEHWiogdDSej4YxU6S3rRHIVSQ/fdvwiYJR6SknQmVDcKvIDrS0emwRWGiOxEmQCd9wvBKY+3ROVWJ6xaRiI4KPzLtAPAJd9SJDIjYia5aI19QQ=; 24:laR3zeE2pLQbFFnYJUFSYozHDvse4yTg14V/KRBz9e+99VTWgc4iEKsqtD3R0RD7xeLJOX5wtUvXF6d7pVTGMZHqWal3L/KN3sWJwMophB8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR05MB1306; 7:xCgyg7R0scDBT8sARbw4HOI62CtOh8TjG5pwKqm+Eyp/bAnseo2yVDS6QYnHeKJVftEiRWDjAWsQmZzlEKGyhmv9LCrRQ1JnkTZQsnAhJHkpqUgNoZZkqgmFuF1mu9XjRU6MCNxHi58xOk0sOQmwpU/3j+AKd0eAKj7sqKwY8N+EGsHSZu34oH98AtlqMrYyaViMHyb0vs6XvSG1NT6M/MRO6WZiO/R7dh1Qqn7GwQfXR2FAuBnIt81+Mky914T9PGPd1DByNjIiBpV+/uhcK6JcCAq65H8rnolMI23s/4zDQZh4HoTlZ03/+QvsuhFklmOzcILG7LZyzzE/PcGpGQ== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2017 09:10:14.8364 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR05MB1306 X-Mailman-Approved-At: Wed, 01 Mar 2017 12:12:14 +0000 Cc: talatb@mellanox.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: kernel-team-bounces@lists.ubuntu.com From: Paul Blakey BugLink: https://bugs.launchpad.net/ubuntu/1668019 Flower currently allows having the same filter twice with the same priority. Actions (and statistics update) will always execute on the first inserted rule leaving the second rule unused. This patch disallows that. Signed-off-by: Paul Blakey Acked-by: Jiri Pirko Signed-off-by: David S. Miller (cherry picked from commit a3308d8fd1f58c67aaae52d9468791c2082ab2c7) Signed-off-by: Talat Batheesh --- net/sched/cls_flower.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index 5752789..a9a3790 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c @@ -133,6 +133,14 @@ static void fl_clear_masked_range(struct fl_flow_key *key, memset(fl_key_get_start(key, mask), 0, fl_mask_range(mask)); } +static struct cls_fl_filter *fl_lookup(struct cls_fl_head *head, + struct fl_flow_key *mkey) +{ + return rhashtable_lookup_fast(&head->ht, + fl_key_get_start(mkey, &head->mask), + head->ht_params); +} + static int fl_classify(struct sk_buff *skb, const struct tcf_proto *tp, struct tcf_result *res) { @@ -180,9 +188,7 @@ static int fl_classify(struct sk_buff *skb, const struct tcf_proto *tp, fl_set_masked_key(&skb_mkey, &skb_key, &head->mask); - f = rhashtable_lookup_fast(&head->ht, - fl_key_get_start(&skb_mkey, &head->mask), - head->ht_params); + f = fl_lookup(head, &skb_mkey); if (f && !tc_skip_sw(f->flags)) { *res = f->res; return tcf_exts_exec(skb, &f->exts, res); @@ -845,6 +851,11 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, goto errout; if (!tc_skip_sw(fnew->flags)) { + if (!fold && fl_lookup(head, &fnew->mkey)) { + err = -EEXIST; + goto errout; + } + err = rhashtable_insert_fast(&head->ht, &fnew->ht_node, head->ht_params); if (err)