[{"id":1764348,"web_url":"http://patchwork.ozlabs.org/comment/1764348/","msgid":"<7791dee1-64a9-dcaa-c5d9-0b04a44bc526@akamai.com>","list_archive_url":null,"date":"2017-09-06T20:22:30","subject":"Re: [PATCH] netfilter: xt_hashlimit: avoid 64-bit division","submitter":{"id":66296,"url":"http://patchwork.ozlabs.org/api/people/66296/","name":"Vishwanath Pai","email":"vpai@akamai.com"},"content":"On 09/06/2017 03:57 PM, Arnd Bergmann wrote:\n> 64-bit division is expensive on 32-bit architectures, and\n> requires a special function call to avoid a link error like:\n> \n> net/netfilter/xt_hashlimit.o: In function `hashlimit_mt_common':\n> xt_hashlimit.c:(.text+0x1328): undefined reference to `__aeabi_uldivmod'\n> \n> In the case of hashlimit_mt_common, we don't actually need a\n> 64-bit operation, we can simply rewrite the function slightly\n> to make that clear to the compiler.\n> \n> Fixes: bea74641e378 (\"netfilter: xt_hashlimit: add rate match mode\")\n> Signed-off-by: Arnd Bergmann <arnd@arndb.de>\n> ---\n>  net/netfilter/xt_hashlimit.c | 5 ++++-\n>  1 file changed, 4 insertions(+), 1 deletion(-)\n> \n> diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c\n> index 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> \n\nI have submitted another patch to fix this:\nhttps://patchwork.ozlabs.org/patch/809881/\n\nWe have seen this problem before, I was careful not to introduce this\nagain in the new patch but clearly I overlooked this particular line :(\n\nIn the other cases we fixed it by replacing division with div64_u64().\n\n-Vishwanath\n--\nTo unsubscribe from this list: send the line \"unsubscribe netfilter-devel\" in\nthe body of a message to majordomo@vger.kernel.org\nMore majordomo info at  http://vger.kernel.org/majordomo-info.html","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>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tsecure) header.d=akamai.com header.i=@akamai.com header.b=\"I4X9bbUk\";\n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xnZn82j8Bz9t2W\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  7 Sep 2017 06:24:28 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1752354AbdIFUYQ (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tWed, 6 Sep 2017 16:24:16 -0400","from mx0b-00190b01.pphosted.com ([67.231.157.127]:34894 \"EHLO\n\tmx0b-00190b01.pphosted.com\" rhost-flags-OK-OK-OK-OK)\n\tby vger.kernel.org with ESMTP id S1752058AbdIFUYO (ORCPT\n\t<rfc822;netfilter-devel@vger.kernel.org>);\n\tWed, 6 Sep 2017 16:24:14 -0400","from pps.filterd (m0122331.ppops.net [127.0.0.1])\n\tby m0122331.ppops.net-00190b01. (8.16.0.21/8.16.0.21) with SMTP id\n\tv86KLlB4026473; Wed, 6 Sep 2017 21:22:33 +0100","from prod-mail-ppoint4 ([96.6.114.87])\n\tby mx0b-00190b01.pphosted.com with ESMTP id 2cqhgrpnqm-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256\n\tverify=NOT); Wed, 06 Sep 2017 21:22:32 +0100","from pps.filterd (prod-mail-ppoint4.akamai.com [127.0.0.1])\n\tby prod-mail-ppoint4.akamai.com (8.16.0.17/8.16.0.17) with SMTP id\n\tv86KKwIR027676; Wed, 6 Sep 2017 16:22:32 -0400","from prod-mail-relay15.akamai.com ([172.27.17.40])\n\tby prod-mail-ppoint4.akamai.com with ESMTP id 2cqqyvex6y-1;\n\tWed, 06 Sep 2017 16:22:31 -0400","from [172.28.13.81] (bos-lpqrs.kendall.corp.akamai.com\n\t[172.28.13.81])\n\tby prod-mail-relay15.akamai.com (Postfix) with ESMTP id 1D56120064;\n\tWed,  6 Sep 2017 14:22:30 -0600 (MDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=akamai.com;\n\th=subject : to : cc :\n\treferences : from : message-id : date : mime-version : in-reply-to :\n\tcontent-type : content-transfer-encoding; s=jan2016.eng;\n\tbh=0rYg0JCSGX0caRi0u1mA3PuVX11cQdkQzZHJrQRcWT0=;\n\tb=I4X9bbUk3bg6sjTi/xp+IEsQgfogFgRWQ80n2bL7ABk5uXxejb/g4m+pCFuN0Apd8O7G\n\tKqNwtIXdM94JH/OY79hP35aZZnRg8bG3sW7+d8bMXOlzypdxgwEdL5FJQ9biOOiXiIqI\n\t9yR/ywJFbZZ+zGcsAPVYmSPxBhYGlBplBnSZjxf1TqXnRAEWdZp5N46lgClgG/jPfg+r\n\tNeN/i80/GFw39Q87wOPWD8+SLHLHNy3h7qu7Nx0w069Br5tqBVdwTbQX6OGWrfGLUv7c\n\to+scwd7bYlYZpD6xLugULo7vpl+JkYLJoCSZ3DhkrqKsqgfaxTxWokvRhbLf9BOtWgq2\n\tUQ== ","Subject":"Re: [PATCH] netfilter: xt_hashlimit: avoid 64-bit division","To":"Arnd Bergmann <arnd@arndb.de>, 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":"Josh Hunt <johunt@akamai.com>, netfilter-devel@vger.kernel.org,\n\tcoreteam@netfilter.org, netdev@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org","References":"<20170906195825.3715290-1-arnd@arndb.de>","From":"Vishwanath Pai <vpai@akamai.com>","Message-ID":"<7791dee1-64a9-dcaa-c5d9-0b04a44bc526@akamai.com>","Date":"Wed, 6 Sep 2017 16:22:30 -0400","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.1.1","MIME-Version":"1.0","In-Reply-To":"<20170906195825.3715290-1-arnd@arndb.de>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"7bit","X-Proofpoint-Virus-Version":["vendor=fsecure engine=2.50.10432:, ,\n\tdefinitions=2017-09-06_06:, , signatures=0","vendor=fsecure engine=2.50.10432:, ,\n\tdefinitions=2017-09-06_06:, , signatures=0"],"X-Proofpoint-Spam-Details":["rule=notspam policy=default score=0 spamscore=0\n\tsuspectscore=0\n\tmalwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam\n\tadjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000\n\tdefinitions=main-1709060291","rule=notspam policy=default score=0\n\tpriorityscore=1501 malwarescore=0\n\tsuspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011\n\tlowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam\n\tadjust=0\n\treason=mlx scancount=1 engine=8.0.1-1707230000\n\tdefinitions=main-1709060292"],"Sender":"netfilter-devel-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netfilter-devel.vger.kernel.org>","X-Mailing-List":"netfilter-devel@vger.kernel.org"}},{"id":1764363,"web_url":"http://patchwork.ozlabs.org/comment/1764363/","msgid":"<CAK8P3a1GxBjWqnK+fdKmzOhXyFK1XbCFWau8md3OjnLjUZOeDg@mail.gmail.com>","list_archive_url":null,"date":"2017-09-06T20:48:22","subject":"Re: [PATCH] netfilter: xt_hashlimit: avoid 64-bit division","submitter":{"id":30,"url":"http://patchwork.ozlabs.org/api/people/30/","name":"Arnd Bergmann","email":"arnd@arndb.de"},"content":"On Wed, Sep 6, 2017 at 10:22 PM, Vishwanath Pai <vpai@akamai.com> wrote:\n> On 09/06/2017 03:57 PM, Arnd Bergmann wrote:\n>> 64-bit division is expensive on 32-bit architectures, and\n>> requires a special function call to avoid a link error like:\n>>\n>> net/netfilter/xt_hashlimit.o: In function `hashlimit_mt_common':\n>> xt_hashlimit.c:(.text+0x1328): undefined reference to `__aeabi_uldivmod'\n>>\n>> In the case of hashlimit_mt_common, we don't actually need a\n>> 64-bit operation, we can simply rewrite the function slightly\n>> to make that clear to the compiler.\n>>\n>> Fixes: bea74641e378 (\"netfilter: xt_hashlimit: add rate match mode\")\n>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>\n>> ---\n>>  net/netfilter/xt_hashlimit.c | 5 ++++-\n>>  1 file changed, 4 insertions(+), 1 deletion(-)\n>>\n>> diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c\n>> index 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>>       u64 r;\n>>\n>> -     r = user ? 0xFFFFFFFFULL / user : 0xFFFFFFFFULL;\n>> +     if (user > 0xFFFFFFFFULL)\n>> +             return 0;\n>> +\n>> +     r = user ? 0xFFFFFFFFULL / (u32)user : 0xFFFFFFFFULL;\n>>       r = (r - 1) << 4;\n>>       return r;\n>>  }\n>>\n>\n> I have submitted another patch to fix this:\n> https://patchwork.ozlabs.org/patch/809881/\n>\n> We have seen this problem before, I was careful not to introduce this\n> again in the new patch but clearly I overlooked this particular line :(\n>\n> In the other cases we fixed it by replacing division with div64_u64().\n\ndiv64_u64() seems needlessly expensive here since the dividend\nis known to be a 32-bit number. I guess the function is not called\nfrequently though, so it doesn't matter much.\n\n      Arnd\n--\nTo unsubscribe from this list: send the line \"unsubscribe netfilter-devel\" in\nthe body of a message to majordomo@vger.kernel.org\nMore majordomo info at  http://vger.kernel.org/majordomo-info.html","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>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"fULubQOw\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xnbK30kNSz9sRY\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  7 Sep 2017 06:48:39 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1752859AbdIFUsZ (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tWed, 6 Sep 2017 16:48:25 -0400","from mail-oi0-f66.google.com ([209.85.218.66]:36181 \"EHLO\n\tmail-oi0-f66.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1752501AbdIFUsY (ORCPT\n\t<rfc822;netfilter-devel@vger.kernel.org>);\n\tWed, 6 Sep 2017 16:48:24 -0400","by mail-oi0-f66.google.com with SMTP id g15so5458635oib.3;\n\tWed, 06 Sep 2017 13:48:23 -0700 (PDT)","by 10.157.91.35 with HTTP; Wed, 6 Sep 2017 13:48:22 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=mime-version:sender:in-reply-to:references:from:date:message-id\n\t:subject:to:cc;\n\tbh=dYdnf79yVV7Y4uq1xfTZewmV60PK78Ir4RC1agJ+UqI=;\n\tb=fULubQOw7P/xCK2yMY3L2i6Wkf9HY1Y9sY0roMy6iYX8q/F8V3TqTGZiF6+khRLBWz\n\tbh4HQdiqw4wvMGL+w2mZe8LdJGWlCVJv7wMOlgHhYNm9v5eVchH5K00KYANE5q23cyfx\n\tBbEByE9n3J19NXpmMAwJ68HMVIJM8HIZfiFvViLh0xEyHpICPr+JwYZi+W4phFIT0qvz\n\tFRmRvwbrQClQ14bEXfGMRGZm5vnKWA9UweLZjiZJTnrFKrbkDgo7z3QjiN9FsRcFPvak\n\tzaupaCCxz/9q/tYS5fhW1lMlDFYKznp/Vccw2eWhcvQW4MzOFpY5xTHwAmk+wUMlSix/\n\tXvQQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:sender:in-reply-to:references:from\n\t:date:message-id:subject:to:cc;\n\tbh=dYdnf79yVV7Y4uq1xfTZewmV60PK78Ir4RC1agJ+UqI=;\n\tb=HIhkBlhzHT5qeQ5rlkaG4l27dBNLYA7wxbfCRxMCppN2SXgzJFD6cgw4mHdgT5T0x1\n\te/d/Tbh+xyrQu+IJH3zidnlVCr9TYmXer5nG4kZ7uJI2IMRz+6fnlyeO0HqXYr+G0/fN\n\tJSgRg9ukrDIFLnq7H/d+A/0BFpKsHO5o+5dQoEp1W8PndfxJWgXViftpefkNG+sp2/A9\n\tm9oDUH3pgEuvzCyD4aX2f1yNaemiM53Bj1RSxgZQwQ707YAsXgTXFhTt4mQr0KsgFaPK\n\tRS7eJL6uOPG2Iua2twhoi6mwkQmXxSbFJggCjNSVDRRHunfXGrWE4p89xS/WBDiPl4Vf\n\tK7UA==","X-Gm-Message-State":"AHPjjUiG+LyPNFj2g4r9VGre7mIp8rgQ+kl/sT5u4jWO8GFEUZu42pOL\n\tKZPEZVtWM6cgGTTx//1jGTjUK56e4sS5jCE=","X-Google-Smtp-Source":"ADKCNb7NRibRrVcDxQm1r29qelXC6omRmalnRPZ2Z/r2uuwYJxQHlPADG389eWB1ZbMlNJe/f39svNgvbRMKkSHTC9A=","X-Received":"by 10.202.193.65 with SMTP id r62mr505922oif.313.1504730903386; \n\tWed, 06 Sep 2017 13:48:23 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<7791dee1-64a9-dcaa-c5d9-0b04a44bc526@akamai.com>","References":"<20170906195825.3715290-1-arnd@arndb.de>\n\t<7791dee1-64a9-dcaa-c5d9-0b04a44bc526@akamai.com>","From":"Arnd Bergmann <arnd@arndb.de>","Date":"Wed, 6 Sep 2017 22:48:22 +0200","X-Google-Sender-Auth":"IGsF-oW8p2YwFyhd3o9zRL6BE9c","Message-ID":"<CAK8P3a1GxBjWqnK+fdKmzOhXyFK1XbCFWau8md3OjnLjUZOeDg@mail.gmail.com>","Subject":"Re: [PATCH] netfilter: xt_hashlimit: avoid 64-bit division","To":"Vishwanath Pai <vpai@akamai.com>","Cc":"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>,\n\tJosh Hunt <johunt@akamai.com>, netfilter-devel@vger.kernel.org,\n\tcoreteam@netfilter.org, Networking <netdev@vger.kernel.org>,\n\tLinux Kernel Mailing List <linux-kernel@vger.kernel.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Sender":"netfilter-devel-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netfilter-devel.vger.kernel.org>","X-Mailing-List":"netfilter-devel@vger.kernel.org"}},{"id":1764638,"web_url":"http://patchwork.ozlabs.org/comment/1764638/","msgid":"<20170907101931.GB2049@salvia>","list_archive_url":null,"date":"2017-09-07T10:19:31","subject":"Re: [PATCH] netfilter: xt_hashlimit: avoid 64-bit division","submitter":{"id":1315,"url":"http://patchwork.ozlabs.org/api/people/1315/","name":"Pablo Neira Ayuso","email":"pablo@netfilter.org"},"content":"On Wed, Sep 06, 2017 at 10:48:22PM +0200, Arnd Bergmann wrote:\n> On Wed, Sep 6, 2017 at 10:22 PM, Vishwanath Pai <vpai@akamai.com> wrote:\n> > On 09/06/2017 03:57 PM, Arnd Bergmann wrote:\n> >> 64-bit division is expensive on 32-bit architectures, and\n> >> requires a special function call to avoid a link error like:\n> >>\n> >> net/netfilter/xt_hashlimit.o: In function `hashlimit_mt_common':\n> >> xt_hashlimit.c:(.text+0x1328): undefined reference to `__aeabi_uldivmod'\n> >>\n> >> In the case of hashlimit_mt_common, we don't actually need a\n> >> 64-bit operation, we can simply rewrite the function slightly\n> >> to make that clear to the compiler.\n> >>\n> >> Fixes: bea74641e378 (\"netfilter: xt_hashlimit: add rate match mode\")\n> >> Signed-off-by: Arnd Bergmann <arnd@arndb.de>\n> >> ---\n> >>  net/netfilter/xt_hashlimit.c | 5 ++++-\n> >>  1 file changed, 4 insertions(+), 1 deletion(-)\n> >>\n> >> diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c\n> >> index 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> >>       u64 r;\n> >>\n> >> -     r = user ? 0xFFFFFFFFULL / user : 0xFFFFFFFFULL;\n> >> +     if (user > 0xFFFFFFFFULL)\n> >> +             return 0;\n> >> +\n> >> +     r = user ? 0xFFFFFFFFULL / (u32)user : 0xFFFFFFFFULL;\n> >>       r = (r - 1) << 4;\n> >>       return r;\n> >>  }\n> >>\n> >\n> > I have submitted another patch to fix this:\n> > https://patchwork.ozlabs.org/patch/809881/\n> >\n> > We have seen this problem before, I was careful not to introduce this\n> > again in the new patch but clearly I overlooked this particular line :(\n> >\n> > In the other cases we fixed it by replacing division with div64_u64().\n> \n> div64_u64() seems needlessly expensive here since the dividend\n> is known to be a 32-bit number. I guess the function is not called\n> frequently though, so it doesn't matter much.\n\nThis is called from the packet path, only for the first packet for\neach new destination IP entry in the hashtable, still from the\ndatapath. So if we can take something faster (for 32 bit arches) that\nis correct, I think it's sensible to take.\n\nLet me know in any case.\n--\nTo unsubscribe from this list: send the line \"unsubscribe netfilter-devel\" in\nthe body of a message to majordomo@vger.kernel.org\nMore majordomo info at  http://vger.kernel.org/majordomo-info.html","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 3xnxKZ6BWKz9t2f\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  7 Sep 2017 20:20:18 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1754217AbdIGKUB (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tThu, 7 Sep 2017 06:20:01 -0400","from ganesha.gnumonks.org ([213.95.27.120]:52236 \"EHLO\n\tganesha.gnumonks.org\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1753905AbdIGKUA (ORCPT\n\t<rfc822;netfilter-devel@vger.kernel.org>);\n\tThu, 7 Sep 2017 06:20:00 -0400","from 129.166.216.87.static.jazztel.es ([87.216.166.129]\n\thelo=gnumonks.org) by ganesha.gnumonks.org with esmtpsa\n\t(TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2)\n\t(envelope-from <pablo@gnumonks.org>)\n\tid 1dptuG-0000Fs-Nb; Thu, 07 Sep 2017 12:19:34 +0200"],"Date":"Thu, 7 Sep 2017 12:19:31 +0200","From":"Pablo Neira Ayuso <pablo@netfilter.org>","To":"Arnd Bergmann <arnd@arndb.de>","Cc":"Vishwanath Pai <vpai@akamai.com>,\n\tJozsef Kadlecsik <kadlec@blackhole.kfki.hu>,\n\tFlorian Westphal <fw@strlen.de>, \"David S. Miller\" <davem@davemloft.net>,\n\tJosh Hunt <johunt@akamai.com>, netfilter-devel@vger.kernel.org,\n\tcoreteam@netfilter.org, Networking <netdev@vger.kernel.org>,\n\tLinux Kernel Mailing List <linux-kernel@vger.kernel.org>","Subject":"Re: [PATCH] netfilter: xt_hashlimit: avoid 64-bit division","Message-ID":"<20170907101931.GB2049@salvia>","References":"<20170906195825.3715290-1-arnd@arndb.de>\n\t<7791dee1-64a9-dcaa-c5d9-0b04a44bc526@akamai.com>\n\t<CAK8P3a1GxBjWqnK+fdKmzOhXyFK1XbCFWau8md3OjnLjUZOeDg@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<CAK8P3a1GxBjWqnK+fdKmzOhXyFK1XbCFWau8md3OjnLjUZOeDg@mail.gmail.com>","User-Agent":"Mutt/1.5.23 (2014-03-12)","X-Spam-Score":"-2.9 (--)","Sender":"netfilter-devel-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netfilter-devel.vger.kernel.org>","X-Mailing-List":"netfilter-devel@vger.kernel.org"}},{"id":1764655,"web_url":"http://patchwork.ozlabs.org/comment/1764655/","msgid":"<CAK8P3a0tTApdk_mbxd_Xm4j0X6-=u6Zxg9wGyp_bPp5aov_mtw@mail.gmail.com>","list_archive_url":null,"date":"2017-09-07T11:16:15","subject":"Re: [PATCH] netfilter: xt_hashlimit: avoid 64-bit division","submitter":{"id":30,"url":"http://patchwork.ozlabs.org/api/people/30/","name":"Arnd Bergmann","email":"arnd@arndb.de"},"content":"On Thu, Sep 7, 2017 at 12:19 PM, Pablo Neira Ayuso <pablo@netfilter.org> wrote:\n> On Wed, Sep 06, 2017 at 10:48:22PM +0200, Arnd Bergmann wrote:\n>> On Wed, Sep 6, 2017 at 10:22 PM, Vishwanath Pai <vpai@akamai.com> wrote:\n>> > On 09/06/2017 03:57 PM, Arnd Bergmann wrote:\n>> >> 64-bit division is expensive on 32-bit architectures, and\n>> >> requires a special function call to avoid a link error like:\n>> >>\n>> >> net/netfilter/xt_hashlimit.o: In function `hashlimit_mt_common':\n>> >> xt_hashlimit.c:(.text+0x1328): undefined reference to `__aeabi_uldivmod'\n>> >>\n>> >> In the case of hashlimit_mt_common, we don't actually need a\n>> >> 64-bit operation, we can simply rewrite the function slightly\n>> >> to make that clear to the compiler.\n>> >>\n>> >> Fixes: bea74641e378 (\"netfilter: xt_hashlimit: add rate match mode\")\n>> >> Signed-off-by: Arnd Bergmann <arnd@arndb.de>\n>> >> ---\n>> >>  net/netfilter/xt_hashlimit.c | 5 ++++-\n>> >>  1 file changed, 4 insertions(+), 1 deletion(-)\n>> >>\n>> >> diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c\n>> >> index 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>> >>       u64 r;\n>> >>\n>> >> -     r = user ? 0xFFFFFFFFULL / user : 0xFFFFFFFFULL;\n>> >> +     if (user > 0xFFFFFFFFULL)\n>> >> +             return 0;\n>> >> +\n>> >> +     r = user ? 0xFFFFFFFFULL / (u32)user : 0xFFFFFFFFULL;\n>> >>       r = (r - 1) << 4;\n>> >>       return r;\n>> >>  }\n>> >>\n>> >\n>> > I have submitted another patch to fix this:\n>> > https://patchwork.ozlabs.org/patch/809881/\n>> >\n>> > We have seen this problem before, I was careful not to introduce this\n>> > again in the new patch but clearly I overlooked this particular line :(\n>> >\n>> > In the other cases we fixed it by replacing division with div64_u64().\n>>\n>> div64_u64() seems needlessly expensive here since the dividend\n>> is known to be a 32-bit number. I guess the function is not called\n>> frequently though, so it doesn't matter much.\n>\n> This is called from the packet path, only for the first packet for\n> each new destination IP entry in the hashtable, still from the\n> datapath. So if we can take something faster (for 32 bit arches) that\n> is correct, I think it's sensible to take.\n>\n> Let me know in any case.\n\nI think my version should be slightly better then, unless someone\nfinds something wrong with it.\n\n       Arnd\n--\nTo unsubscribe from this list: send the line \"unsubscribe netfilter-devel\" in\nthe body of a message to majordomo@vger.kernel.org\nMore majordomo info at  http://vger.kernel.org/majordomo-info.html","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>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"PqZi/SLh\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xnyZP3n9dz9sCZ\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  7 Sep 2017 21:16:29 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1754958AbdIGLQS (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tThu, 7 Sep 2017 07:16:18 -0400","from mail-oi0-f65.google.com ([209.85.218.65]:35049 \"EHLO\n\tmail-oi0-f65.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1754188AbdIGLQR (ORCPT\n\t<rfc822;netfilter-devel@vger.kernel.org>);\n\tThu, 7 Sep 2017 07:16:17 -0400","by mail-oi0-f65.google.com with SMTP id n18so6511644oig.2;\n\tThu, 07 Sep 2017 04:16:16 -0700 (PDT)","by 10.157.91.35 with HTTP; Thu, 7 Sep 2017 04:16:15 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=mime-version:sender:in-reply-to:references:from:date:message-id\n\t:subject:to:cc;\n\tbh=gFtC0MYVwrJnXRHJqDOwDdoK2snkQEVBwcJDEsAMbGI=;\n\tb=PqZi/SLhX7ELQTCWBUDWik7DqN8U0MlSQT2ewpssSmfHPa88V3Rqub0rX/B/QCvLDT\n\tXzdxcYrKgnRXrw9lJVrNT00F+WSMwCAyLLc9fxLAiSdsjjPoOsr5J9nd7iRnUcAr0nGp\n\teBSAIi/OM2Nivr7w6xBnhltqIul+CT1gPU7xhny/SzTwfuJPmmFkTvhCbS2oCAjKH221\n\tdoKfqKqaVlV4E7sSZwJCjAdGhH+gtyRzOsYc0R9BiCccndGL+a/OAUETc31OjZDjNMsa\n\tF6sTc6UG6jcu/HTJ6mzAZCAD5pobugx/N0AAjom4d3/7lKwqMoUFJSk4hZjqhf65rQOQ\n\t99ZQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:sender:in-reply-to:references:from\n\t:date:message-id:subject:to:cc;\n\tbh=gFtC0MYVwrJnXRHJqDOwDdoK2snkQEVBwcJDEsAMbGI=;\n\tb=kZBEYBDoVp/hWipFm2e9XGWsFl84BaQNsTViXrpFgRl0/tbw4rSHCjA052k9ls17iz\n\tK/j8aduOXtRe4KDystJWjhvkrKaQANaKJady4WMh5HFEDqTI1G2zC3BvmLgFTDD6fTU+\n\tHSvUhUaQMEK3VZYVHtztfKbRwomyoiiKnJ0YbBrKv8qEHI8RFYuocz6nmQhC4NfDMsLF\n\tp3i4KKKCu3ZId/UfA7WEKLVEi53BfFJ7FmGXGkwyAEPknLKS/BR14k3q3zBrWqWQPq3E\n\t0GEQmANiZNHE3urviPTkIqGRIIBD9JpnwNPZ/fO7jWJ6v6ZIGDoRkOypoOsNdIbomfFw\n\tJNQA==","X-Gm-Message-State":"AHPjjUja6jZP9YJvMizXCNR5xCIxqbow7XgMZ1Yq1ReqaYAsBpi9CcT6\n\tuDxTPO0Ah00lq2+CL9XnI7OsZJJuFcLj","X-Google-Smtp-Source":"ADKCNb5Rtuq7mX5OursCkocvgEn9In25f+OOz1fWPoIc2veGHyt5ej4u0cPcSKeClu9PSefLqwmClfW7Mr7koHIFYjo=","X-Received":"by 10.202.107.65 with SMTP id g62mr2613777oic.227.1504782976098; \n\tThu, 07 Sep 2017 04:16:16 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<20170907101931.GB2049@salvia>","References":"<20170906195825.3715290-1-arnd@arndb.de>\n\t<7791dee1-64a9-dcaa-c5d9-0b04a44bc526@akamai.com>\n\t<CAK8P3a1GxBjWqnK+fdKmzOhXyFK1XbCFWau8md3OjnLjUZOeDg@mail.gmail.com>\n\t<20170907101931.GB2049@salvia>","From":"Arnd Bergmann <arnd@arndb.de>","Date":"Thu, 7 Sep 2017 13:16:15 +0200","X-Google-Sender-Auth":"jDngN6-AG4_ikV4yBrEm0kRVNcs","Message-ID":"<CAK8P3a0tTApdk_mbxd_Xm4j0X6-=u6Zxg9wGyp_bPp5aov_mtw@mail.gmail.com>","Subject":"Re: [PATCH] netfilter: xt_hashlimit: avoid 64-bit division","To":"Pablo Neira Ayuso <pablo@netfilter.org>","Cc":"Vishwanath Pai <vpai@akamai.com>,\n\tJozsef Kadlecsik <kadlec@blackhole.kfki.hu>,\n\tFlorian Westphal <fw@strlen.de>, \"David S. Miller\" <davem@davemloft.net>,\n\tJosh Hunt <johunt@akamai.com>, netfilter-devel@vger.kernel.org,\n\tcoreteam@netfilter.org, Networking <netdev@vger.kernel.org>,\n\tLinux Kernel Mailing List <linux-kernel@vger.kernel.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Sender":"netfilter-devel-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netfilter-devel.vger.kernel.org>","X-Mailing-List":"netfilter-devel@vger.kernel.org"}},{"id":1764752,"web_url":"http://patchwork.ozlabs.org/comment/1764752/","msgid":"<CAMuHMdX-yEz5QUb_ZgDki72Csiz05f6s+AmNei=_eZh7qf9-RQ@mail.gmail.com>","list_archive_url":null,"date":"2017-09-07T14:16:46","subject":"Re: [PATCH] netfilter: xt_hashlimit: avoid 64-bit division","submitter":{"id":703,"url":"http://patchwork.ozlabs.org/api/people/703/","name":"Geert Uytterhoeven","email":"geert@linux-m68k.org"},"content":"Hi Arnd,\n\nOn Wed, Sep 6, 2017 at 9:57 PM, Arnd Bergmann <arnd@arndb.de> wrote:\n> 64-bit division is expensive on 32-bit architectures, and\n> requires a special function call to avoid a link error like:\n>\n> net/netfilter/xt_hashlimit.o: In function `hashlimit_mt_common':\n> xt_hashlimit.c:(.text+0x1328): undefined reference to `__aeabi_uldivmod'\n>\n> In the case of hashlimit_mt_common, we don't actually need a\n> 64-bit operation, we can simply rewrite the function slightly\n> to make that clear to the compiler.\n>\n> Fixes: bea74641e378 (\"netfilter: xt_hashlimit: add rate match mode\")\n> Signed-off-by: Arnd Bergmann <arnd@arndb.de>\n\nThanks, this fixes a similar issue (__udivdi3 undefined) on m68k.\n\nAcked-by: Geert Uytterhoeven <geert@linux-m68k.org>\n\nGr{oetje,eeting}s,\n\n                        Geert\n\n--\nGeert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org\n\nIn personal conversations with technical people, I call myself a hacker. But\nwhen I'm talking to journalists I just say \"programmer\" or something like that.\n                                -- Linus Torvalds\n--\nTo unsubscribe from this list: send the line \"unsubscribe netfilter-devel\" in\nthe body of a message to majordomo@vger.kernel.org\nMore majordomo info at  http://vger.kernel.org/majordomo-info.html","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>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"oR4xtAOt\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xp2Zn1Dp8z9sRY\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri,  8 Sep 2017 00:17:05 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1755385AbdIGOQt (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tThu, 7 Sep 2017 10:16:49 -0400","from mail-pf0-f193.google.com ([209.85.192.193]:38572 \"EHLO\n\tmail-pf0-f193.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1754005AbdIGOQr (ORCPT\n\t<rfc822;netfilter-devel@vger.kernel.org>);\n\tThu, 7 Sep 2017 10:16:47 -0400","by mail-pf0-f193.google.com with SMTP id q76so4566904pfq.5;\n\tThu, 07 Sep 2017 07:16:47 -0700 (PDT)","by 10.100.160.9 with HTTP; Thu, 7 Sep 2017 07:16:46 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=mime-version:sender:in-reply-to:references:from:date:message-id\n\t:subject:to:cc;\n\tbh=fu8oqDrTHPsmq1wQOxPIP7VtaWpKkHKW2AJOa8SxwV4=;\n\tb=oR4xtAOtBd4hRh8v0itEHmLAyzpk9kXfgoNNixhByJouyrUIaygimC65IQmC1dGdh1\n\tw439KHZv9RsIIfXx6EuY0AeATk4zqWolNvpd4ixyUIFAKi99MnTa8WplkggkPNPMpo6r\n\twMKG8aL6+Z979lZtSYWDH74MkvAsj5qugq8uXsgQHOKi/IEiQZAi4898wrJahc4dzGqd\n\tB+zsPgJgfGOl3JCGCL5FGaftDYAfdMabZIvUfiEoOwAJfIRv4qaErTKVHj3mquyD0p97\n\tJgbsN4G5FKtMoVUrMV9tNpIV+nQF9lwUTOJsPNZMTJhgs9Ee/FoQg/Nbz+f9hVEeBZW6\n\t92fQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:sender:in-reply-to:references:from\n\t:date:message-id:subject:to:cc;\n\tbh=fu8oqDrTHPsmq1wQOxPIP7VtaWpKkHKW2AJOa8SxwV4=;\n\tb=ot48dCHv7ZdRr3RdWlOG98h9wgF6pHm/hnEvvNXR6aO/HHft/Ude1S/kSpNnzFrWuh\n\trOebt6ule/bIu8TqjAhXRPkbEBVkxPhYYva6HhiS4H9UbC63TnJ8YvbCee5DXNm6fZ0v\n\tYQ7+eII7vSGApZQHQTqcghS7epLcUpCxi0/fpnlIhAWFAJEhbk6L9oCKNksdXAdUtf9F\n\tTjp1zJzZ4fM9k4QV+Qqo2vFWJIXsgrV+6DA6lF4rmD/YYKd1fbC8T5DRVsITr6ih5KVI\n\ti5KyEyH0lO8sU/+tH62O7k8hZ7aSEyshDROy4cfTp0XQ62bRLKmcs2Lbv1Y9dQVRXxgP\n\t/BPQ==","X-Gm-Message-State":"AHPjjUg5RAS8flSeHPZbVejXulVRF/agbMtu6Wwsjy+SIUjKnXP5DmYa\n\t9wAkvVcR7w75gQZ0VgnTTQVdHkRt7Q==","X-Google-Smtp-Source":"ADKCNb5T9f9mN9xkinffEKL4jJTq/2bSOAKxwiEl7ZLLPRS3tpTPGdEXkkDtHhK/KJlTSC3BTKizFgrHs0wMBg1pod8=","X-Received":"by 10.99.181.23 with SMTP id y23mr2794763pge.177.1504793806986; \n\tThu, 07 Sep 2017 07:16:46 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<20170906195825.3715290-1-arnd@arndb.de>","References":"<20170906195825.3715290-1-arnd@arndb.de>","From":"Geert Uytterhoeven <geert@linux-m68k.org>","Date":"Thu, 7 Sep 2017 16:16:46 +0200","X-Google-Sender-Auth":"H5DIKqgCGj_TJ7R4BxVO7-am0CU","Message-ID":"<CAMuHMdX-yEz5QUb_ZgDki72Csiz05f6s+AmNei=_eZh7qf9-RQ@mail.gmail.com>","Subject":"Re: [PATCH] netfilter: xt_hashlimit: avoid 64-bit division","To":"Arnd Bergmann <arnd@arndb.de>","Cc":"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>,\n\tVishwanath Pai <vpai@akamai.com>,\n\tJosh Hunt <johunt@akamai.com>, netfilter-devel@vger.kernel.org,\n\tcoreteam@netfilter.org,\n\t\"netdev@vger.kernel.org\" <netdev@vger.kernel.org>,\n\t\"linux-kernel@vger.kernel.org\" <linux-kernel@vger.kernel.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Sender":"netfilter-devel-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netfilter-devel.vger.kernel.org>","X-Mailing-List":"netfilter-devel@vger.kernel.org"}}]