From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id BDDB3C001DF for ; Thu, 3 Aug 2023 13:23:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 41C8E280258; Thu, 3 Aug 2023 09:23:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3CCA728022C; Thu, 3 Aug 2023 09:23:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2BCAF280258; Thu, 3 Aug 2023 09:23:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 1CBAC28022C for ; Thu, 3 Aug 2023 09:23:00 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id E7FD3B2CC6 for ; Thu, 3 Aug 2023 13:22:59 +0000 (UTC) X-FDA: 81082858878.20.BCDB905 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf17.hostedemail.com (Postfix) with ESMTP id 0348940015 for ; Thu, 3 Aug 2023 13:22:56 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=tl66j6LV; dmarc=none; spf=none (imf17.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1691068977; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LnL/w0gerl2bmZjXzcUrorqUHH4MeidXJZnUY3FnBf8=; b=hIMUCLBdvRWQxDfyTv77FRak04Rflzlvd8RKi6dBjjQDf/MJnS2W0c9FrEirPLeAkSbA86 3UsxwCJE0Q/1+Sivl8MxsDXQPagjHLOBMdd8UvbsBYApxVJNz34HA4uyD7h37Z+4NeSlSj AgNAK79KzMzoCnFzM6yhlEjl0x9rLaY= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=tl66j6LV; dmarc=none; spf=none (imf17.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1691068977; a=rsa-sha256; cv=none; b=MlqkD+Pmmo47dJzwNIdwzRG4LJPFuO30DVovMsWrcXc/K48xZtC/pzT0RhrJ4Es/xbHSxd 1PwFmJPkaW6wWLlTWegSM2B5dew46oxxSk3FGYQFdpc+3osIhx7yKTw8GavVhuUC/kgazK mYIWJj4/eRO1cj/xAutjzDw3d3Fx5qQ= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=LnL/w0gerl2bmZjXzcUrorqUHH4MeidXJZnUY3FnBf8=; b=tl66j6LVXL/8xk7brEEbkOjnTb qWzPdVREn0HUGqy0AbZR/JqX2T8Bb0c6IIHM2Pgw7Q9Z4ji8BTbs7cYVdRDvNLu5as/rQFfnoxXsD ubsP2nHqvmnJFWHkOsNvw9xLGwiu3TtHORltseCtB4yU4AOe+PFUQDZjzwwEATH5U+UJirW8lA4h2 nJGxcrFeisAuW9vNDS4lbP1raFOXJZe4RGGW6gRjjXsvKwCK29CnM2IIzSsTwDsVtK2Mn7cvA9eok DVxdCD/umCFRYUt37bXhFWjC7xsJGMS776PK1R+VMDAsHIvyqndWJdFJPxgzZOKCFo4ZoP4hw0Lbl 9juj41AA==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1qRYI2-003td9-EV; Thu, 03 Aug 2023 13:22:54 +0000 Date: Thu, 3 Aug 2023 14:22:54 +0100 From: Matthew Wilcox To: Phi Nguyen Cc: Andrew Morton , linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v6 01/38] minmax: Add in_range() macro Message-ID: References: <20230802151406.3735276-1-willy@infradead.org> <20230802151406.3735276-2-willy@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 0348940015 X-Stat-Signature: 3f4uwuga5ccw969paqcd56q1d9a7baht X-HE-Tag: 1691068976-132874 X-HE-Meta: U2FsdGVkX192JNqyA7qQwPv7I+kkiEDRPEmHjj4iFLXu3KnDE3XEFrzBKpZlRyx94gW+096bFCDKiaidicJa11O1h6N+J5ZOs2vwQETqGla/mxGLMQfBaxkL14aM+o+eB8qaeEAiU4OR2iPe7bmjZLxgzG3MKksZTHCrWYu+TuD3dM/QmddHiHZdYoUIDAVHd5xRmeKzAi+4oA6LZ7f6O2o6Kf1yglTduUaEbtQ2JJJdmwGjYOgsILsCYmgWGXR7jceTrgVmqJw5aR54p9eea8W6uNGotfrQoBxp5/6kQgToF/NEVs2ronOSSUTMS0Pzt3Hig+XH17b0Ab8PniKFvAAeAN0l9vC+AQXAAQSfWy3yDPPXNESYYlvBiVGAzHls/lUFWoRoGrrqCyZJhQLNZmfPoqW4UUlbfwkPrIddVmKy+9IJNhHmn3Pch2NPi7zkpyHTGJewDo480fRn8OGn4rEdaBH+zTq8yyoXUXw7FoSchq3c82+iKheaFUTGyrINQ1CB13/CtgGdIdPnwO+L01w5Dwmak13XPTfpeJinsnk/IlgcgRdjjNB1ieP3OQN+0/qgLghxfuwFUiOULZyxUzWjRtXXf8qyHDcKodqjlVTrY0IYpyUY88XB7MmdRguRfrLGy9ldaBNmEzoIe1HeAp3+mo1zs4uPE6dfgJj9ISU+tUPYRhrv+nrVjB9dqNNRezVpYVxNTSkUa6ymXEv6h75juZ0SjutvOCx5UanE9/pruP6Qg3B9wWFofWpkPm4sRoEKqiyKM5KbUKcJTyipaSfJxMWVZ7OaCxxhZaPM3uJgsZkdwiOQ7TmebVNBkAC+9f6eRst2xPl3ggtu+aHQg6YtvK+Dh8cXKroqhqzRGoQ2zDoSmTHnF/viDHF+DIyJxlYgQEo8mKndEYyZWDNePQy0YJx819+L6zxiX7WEXwgza1Vj7L29cPWufjwwuW4W+TUUcRmpRh5kDm4XmTz ZyJkNS5k SlDvitC4C/RK+8Fjh6fmIoMH+wDUBSYJNKG8Zlwc8i66aQRvCqOLhswUjZQMfwig+cQUBZoT+ZBKZEDZnbEXBOlzbsJ3rRZEzH+2lm+9TomYljVTv9bM0GfGDfOIwPAhOPfJ0rpupnK8ETOJfyQMubOujeHd0OOBoTRLUDgPJ/I1h6Y3mHWSPHH+xbmssCIj5b5p6QmyQExpfiTl7sPuZHGzj12SduSJfF6MmJczHYY6qtEZDdrAa4XtpigsoRngCwkJW X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, Aug 03, 2023 at 09:00:35PM +0800, Phi Nguyen wrote: > On 8/2/2023 11:13 PM, Matthew Wilcox (Oracle) wrote: > > +static inline bool in_range64(u64 val, u64 start, u64 len) > > +{ > > + return (val - start) < len; > > +} > > + > > +static inline bool in_range32(u32 val, u32 start, u32 len) > > +{ > > + return (val - start) < len; > > +} > > + > > I think these two functions return wrong result if val is smaller than start > and len is big enough. How is it that you stopped reading at exactly the point where I explained that this is intentional? +/** + * in_range - Determine if a value lies within a range. + * @val: Value to test. + * @start: First value in range. + * @len: Number of values in range. + * + * This is more efficient than "if (start <= val && val < (start + len))". + * It also gives a different answer if @start + @len overflows the size of + * the type by a sufficient amount to encompass @val. Decide for yourself + * which behaviour you want, or prove that start + len never overflow. + * Do not blindly replace one form with the other. + */