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 A0FBAEB64DD for ; Tue, 11 Jul 2023 15:50:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 311116B0072; Tue, 11 Jul 2023 11:50:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2C1906B0074; Tue, 11 Jul 2023 11:50:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1B1B36B0075; Tue, 11 Jul 2023 11:50:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 0D2FA6B0072 for ; Tue, 11 Jul 2023 11:50:06 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id D85CE120303 for ; Tue, 11 Jul 2023 15:50:04 +0000 (UTC) X-FDA: 80999767128.17.CD73125 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf08.hostedemail.com (Postfix) with ESMTP id 5193D160018 for ; Tue, 11 Jul 2023 15:50:00 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=BoKijjfv; dmarc=none; spf=pass (imf08.hostedemail.com: domain of akpm@linux-foundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689090601; a=rsa-sha256; cv=none; b=6q5hCD92Ssaa/9imyNnM1XnIbaW4jrZTW+FWlcu5xJmIESqgkDhJadKY66YkRraAnpBH+y oxZJmNTM7Wp63LRUn52MV7fCvSdyq7B3S47VA8SruvzuGZcn92A5qaqsDj8U6VqdfnRzG2 9hyqCr8+8SIH8X3pzeu8fCxNdyzzmp8= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=BoKijjfv; dmarc=none; spf=pass (imf08.hostedemail.com: domain of akpm@linux-foundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689090601; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=50T3d3UAYbmunWbjYU70AIU+IAzFPQ5T7lPgOd1ys6g=; b=NbzrRGUl+fkm9bYBiU7kby+YFyR17agjQWK0rm/KKeMwKr2t8lyhJuxu6S+N/gp20Dyblc vog+vU7N+ja0jzKCR148ajZI4FGwsbK7sxfijzmv1G1TxPj2kz3u/C+uw2VGC42pS8mfTn EQRXDBAhidBl9E0K5QsoFYg5gmqLO4M= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 289EA612E8; Tue, 11 Jul 2023 15:50:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 63951C433C7; Tue, 11 Jul 2023 15:49:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1689090599; bh=1M8nmB54EZY/+b8my3a6BRvNuquZWY4tkJH0mqxJC+w=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=BoKijjfvqvv6NbUyE/VuntEq0ELyssdgeVkybVbYFPfbtEz1VefthvwapIjaumpVB +PbmD9siI2vBoZVtSyejupQbkm7KVC1DthD2GDhKgPSjvUiPxtwYJQ5vZS62Luf/l9 4Pq5qrGeuQ6KnzuOpBqfi3YC2uJTfLDukkZrp3zo= Date: Tue, 11 Jul 2023 08:49:58 -0700 From: Andrew Morton To: Matthew Wilcox Cc: linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v5 01/38] minmax: Add in_range() macro Message-Id: <20230711084958.8fdbb0fc4f80c6d9bbaf0ca3@linux-foundation.org> In-Reply-To: References: <20230710204339.3554919-1-willy@infradead.org> <20230710204339.3554919-2-willy@infradead.org> <20230710161341.c8d6a8b2cbf57013bf6e0140@linux-foundation.org> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 5193D160018 X-Stat-Signature: q67kyogay55fpx7kps97zj9w5peg4mrp X-HE-Tag: 1689090600-178309 X-HE-Meta: U2FsdGVkX1+5F2K3/9VU81o8PipQya/3krlKdbqcAozysbi5h/Qc9/ITfh6CnVq+H6DKdnhkspxv6Cv1nDQYqdShHED+++gXyeS/n/l7uvG0aLmgLOCh9yEfc67D69AifWGAIXwhmjTEAlRLPtYqDrNCXRWJlhaeBDgCfhZ9iD3oxxOHKN8N3H5IW8nz6QZkHkTusJGX6BvbJUWwX5mvPnHiBMOoRLIVnEYht9Mi0yUF0Rpwv1oZhQr2deB13QOKJgWmW3MM0GlAPssFHfAWxFEV0bKWi+dw2MI/FSH6u91BSIilTaodIPIR50ivzAftcxRxYkDZ7hFnBLO4jV9kdF6OVN+BTHCgNZlgPmRgrxsGQ8SRSZT/r3ermbi/6jpH1G/+jvF0FCBl6jzsCNwL4kkENwzH2vYavxq8/n6ZZE5NqTLR38qlPbwtc34Qr92MtI/S/U7LtO9Sf7TTjVARyoDOkTU7QwR2sUMSJl3Kd1s8zir+S1kSPhvpVmPKhUi8gGKslyL6IaiDnsmFZ8C40dckOn2LBMoMtWHbBqMj4OQN2054vqUsPHflxmQZ3baZ/s3V7cvq/N0QGVsYJCMxkOMM7LzdCMrkiLMIHM5eY8gpC+Lu5rnbsLHq0sbo46R6Uy+xGwjru89J2KS6UkvniFepswLgLzNThP2mSLMSAMgsWouxzMN5fPN2gdOYZCUqfBGc/icXsuTVp3mA/P3Aa9F8hzOZxiOVDQHF0GROxG70wpwxbNfh3jHWskiDhOAAIDbu21MynMFADv5iUx2YVvAw85pn9A9R7U95H9BWUi1oYpeRqyTN9ZDL3Dw1M4vcZeFA4AXUlhyuu0eR7kDLIUJo3l2LjfqLZL4BNRkW2reHwsp7pqc3Rv9zGiOisNKJ2t1mJA185B+vNicmd5YmxGa4kb2sguzk1uOG9Dy1NGYBqPYUyRtdqSstyczgtQE5qIJYeP6hDuvJCM7+0xT Zy+4eAjy VrKwhTH2+y8oLykuUwERK8or1+14wcqo+30hD/2ZEaTY3aHB5HbiV/PYNkn/R9ZHMONuSZsRsLYnzP67clwKxl/bvoBgvXVb5di8iag8vrrK1ms3SI5wU8uRpXunGsEqs/bLiuMnMZP8Wb6hU+ec+R3AIuV+jiWA0f9tO+gbzpbr7TNQSwyU+ahd43Uqs51OxEJDC1b2KQOYWrKkMa8QILeR6Ki+qz15meuAu6e/lFWpLTQoWEalZ70CRwNOtPpUfWVeAObp+Iu23Vovwyu82f84rh4vnx57iRS8D2jRMHU0U8pyulHLYLN8VKj8GbbnmS+r1F9+AwsVukR5JyiHsnq4GiIk42Ir/gNitiHqZYqraETznqh14RZ3yIa1EskWXvUd8Oe22b8JlQhy0XwCzm+7Lk05c1NlkCHqtqLdUfFymb8Dhplnb9HnoBQ== 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 Tue, 11 Jul 2023 03:14:44 +0100 Matthew Wilcox wrote: > On Mon, Jul 10, 2023 at 04:13:41PM -0700, Andrew Morton wrote: > > > +/** > > > + * 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. > > > + */ > > > +#define in_range(val, start, len) \ > > > + sizeof(start) <= sizeof(u32) ? in_range32(val, start, len) : \ > > > + in_range64(val, start, len) > > > > There's nothing here to prevent callers from passing a mixture of > > 32-bit and 64-bit values, possibly resulting in truncation of `val' or > > `len'. > > > > Obviously caller is being dumb, but I think it's cost-free to check all > > three of the arguments for 64-bitness? > > > > Or do a min()/max()-style check for consistently typed arguments? > > How about > > #define in_range(val, start, len) \ > (sizeof(val) | sizeof(start) | size(len)) <= sizeof(u32) ? \ > in_range32(val, start, len) : in_range64(val, start, len) It saves some typing ;) sizeof(val+start+len)?