{"id":810773,"url":"http://patchwork.ozlabs.org/api/1.2/patches/810773/?format=json","web_url":"http://patchwork.ozlabs.org/project/netfilter-devel/patch/20170906195825.3715290-1-arnd@arndb.de/","project":{"id":26,"url":"http://patchwork.ozlabs.org/api/1.2/projects/26/?format=json","name":"Netfilter Development","link_name":"netfilter-devel","list_id":"netfilter-devel.vger.kernel.org","list_email":"netfilter-devel@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20170906195825.3715290-1-arnd@arndb.de>","list_archive_url":null,"date":"2017-09-06T19:57:30","name":"netfilter: xt_hashlimit: avoid 64-bit division","commit_ref":null,"pull_url":null,"state":"changes-requested","archived":false,"hash":"e79e6e2dbca1a0b2bbbfb556b0a3c2f643343ad3","submitter":{"id":30,"url":"http://patchwork.ozlabs.org/api/1.2/people/30/?format=json","name":"Arnd Bergmann","email":"arnd@arndb.de"},"delegate":{"id":6139,"url":"http://patchwork.ozlabs.org/api/1.2/users/6139/?format=json","username":"pablo","first_name":"Pablo","last_name":"Neira","email":"pablo@netfilter.org"},"mbox":"http://patchwork.ozlabs.org/project/netfilter-devel/patch/20170906195825.3715290-1-arnd@arndb.de/mbox/","series":[{"id":1869,"url":"http://patchwork.ozlabs.org/api/1.2/series/1869/?format=json","web_url":"http://patchwork.ozlabs.org/project/netfilter-devel/list/?series=1869","date":"2017-09-06T19:57:30","name":"netfilter: xt_hashlimit: avoid 64-bit division","version":1,"mbox":"http://patchwork.ozlabs.org/series/1869/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/810773/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/810773/checks/","tags":{},"related":[],"headers":{"Return-Path":"<netfilter-devel-owner@vger.kernel.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netfilter-devel-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xnZD4427wz9sCZ\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  7 Sep 2017 05:59:16 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1752433AbdIFT64 (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tWed, 6 Sep 2017 15:58:56 -0400","from mout.kundenserver.de ([212.227.126.187]:51051 \"EHLO\n\tmout.kundenserver.de\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1752327AbdIFT6z (ORCPT\n\t<rfc822;netfilter-devel@vger.kernel.org>);\n\tWed, 6 Sep 2017 15:58:55 -0400","from wuerfel.lan ([95.208.190.237]) by mrelayeu.kundenserver.de\n\t(mreue004 [212.227.15.129]) with ESMTPA (Nemesis) id\n\t0Lb6lR-1dALEM22FF-00kd1d; Wed, 06 Sep 2017 21:58:31 +0200"],"From":"Arnd Bergmann <arnd@arndb.de>","To":"Pablo Neira Ayuso <pablo@netfilter.org>,\n\tJozsef Kadlecsik <kadlec@blackhole.kfki.hu>,\n\tFlorian Westphal <fw@strlen.de>, \"David S. Miller\" <davem@davemloft.net>","Cc":"Arnd Bergmann <arnd@arndb.de>, Vishwanath Pai <vpai@akamai.com>,\n\tJosh Hunt <johunt@akamai.com>, netfilter-devel@vger.kernel.org,\n\tcoreteam@netfilter.org, netdev@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org","Subject":"[PATCH] netfilter: xt_hashlimit: avoid 64-bit division","Date":"Wed,  6 Sep 2017 21:57:30 +0200","Message-Id":"<20170906195825.3715290-1-arnd@arndb.de>","X-Mailer":"git-send-email 2.9.0","X-Provags-ID":"V03:K0:e8QqSXuhDvA9681gi8FMf4r9PFzt3YnXK5CDQ8Wpp/GozUf188K\n\tS8jKwh22AKf79PQTZqVlzD/UMml2kT5skx1HiPYyAni89whXdQwkH0yu1gQwwejTBxcdiUI\n\ttlHzJVjuFZ4bqw+IGBbe+gulp2x9oEur1HdF7zHbk8fvrT+8V5ktXirvTmiDOCQfx5TJ3qO\n\tTOs3Z+WMZbQ9I8MUIkKmA==","X-UI-Out-Filterresults":"notjunk:1; V01:K0:ohmIjKTHTJA=:sPZMLd8bCvgzWajkALA0v2\n\tL+eF/uyuuRsijh+yspya8ACgA9q2yDSMOO12EhLSh1xCSlhywCTbIPuuhIa7sTk2vUWCL4w0T\n\tzMOzxSCXYV1gdBieb1vWO21oXt9BM0yxTWXNFICmS/dVc/EUgW0SSM4nf9/tV5IYyihjNcSJX\n\t3OzdBsvuVTpSwgJtuXbUwdgFbSLmYDKuWeVHLsquUVVkf1Aki+Gg4gPpixpWBzNKicfGSKhYk\n\tlKCrofyRCOo/o/dx8mZghMbViUoRLHqW/hOh5bwdhrfLk4PqZBZcq630L9LaI4TK204ZPnTO3\n\t+63PP/9hdAShaGS22NZs0fI2cLuHm/RM1blcRY7JLbMPY1oN88RFINKefvHjM0Lkpo7Ndymue\n\tkl+jh8g+AX8GjInFR4awWx1clz6knOLGiwzySkk+4pI0hA+LVywAgCC/92WCjtqONPKGdfHq3\n\tEySQUtJwJyGtvQJ495lG1N8c45VP8YI1WD71374LM4FICx4jOtBVv0SJeQrkgt3qZCq5Uy+VJ\n\tRBL4lR0gs6B5l8I2+HFo0lTqtonLYpv1McAb79xmiGT/Gek9TR+uQLn7HHaJtO9wpN68AvRJt\n\tGHnUEFNYbGL17bF4SX9lozbWef6KClWNEKqPhg6eVW4p5m/32aK2M0XgQfrhctxU5k/X+3WTD\n\tAXRqFYLkq1GT7IFHBBST6qzW+OXHc4xBqCq1L53uEwn38FA0kkKFbZL6GLtye109su+IveOwA\n\tr8lWInN4iDiYyfXO1gBViYhODqhwSOBWfAVaEw==","Sender":"netfilter-devel-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netfilter-devel.vger.kernel.org>","X-Mailing-List":"netfilter-devel@vger.kernel.org"},"content":"64-bit division is expensive on 32-bit architectures, and\nrequires a special function call to avoid a link error like:\n\nnet/netfilter/xt_hashlimit.o: In function `hashlimit_mt_common':\nxt_hashlimit.c:(.text+0x1328): undefined reference to `__aeabi_uldivmod'\n\nIn the case of hashlimit_mt_common, we don't actually need a\n64-bit operation, we can simply rewrite the function slightly\nto make that clear to the compiler.\n\nFixes: bea74641e378 (\"netfilter: xt_hashlimit: add rate match mode\")\nSigned-off-by: Arnd Bergmann <arnd@arndb.de>\n---\n net/netfilter/xt_hashlimit.c | 5 ++++-\n 1 file changed, 4 insertions(+), 1 deletion(-)","diff":"diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c\nindex 10d48234f5f4..50b53d86eef5 100644\n--- a/net/netfilter/xt_hashlimit.c\n+++ b/net/netfilter/xt_hashlimit.c\n@@ -531,7 +531,10 @@ static u64 user2rate_bytes(u64 user)\n {\n \tu64 r;\n \n-\tr = user ? 0xFFFFFFFFULL / user : 0xFFFFFFFFULL;\n+\tif (user > 0xFFFFFFFFULL)\n+\t\treturn 0;\n+\n+\tr = user ? 0xFFFFFFFFULL / (u32)user : 0xFFFFFFFFULL;\n \tr = (r - 1) << 4;\n \treturn r;\n }\n","prefixes":[]}