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 E2978E77188 for ; Fri, 10 Jan 2025 16:29:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6CED86B00AB; Fri, 10 Jan 2025 11:29:34 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 67DA46B00AC; Fri, 10 Jan 2025 11:29:34 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4F9336B00AE; Fri, 10 Jan 2025 11:29:34 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 25E526B00AB for ; Fri, 10 Jan 2025 11:29:34 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 57E3EA0B18 for ; Fri, 10 Jan 2025 16:29:33 +0000 (UTC) X-FDA: 82992077826.30.67CBFC7 Received: from mail-qt1-f170.google.com (mail-qt1-f170.google.com [209.85.160.170]) by imf16.hostedemail.com (Postfix) with ESMTP id 72922180007 for ; Fri, 10 Jan 2025 16:29:31 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=cSmWydW6; spf=pass (imf16.hostedemail.com: domain of surenb@google.com designates 209.85.160.170 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736526571; 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=eu8TRaExi0UIhJwc+M0JqMAQBG0xLG2ReZQvaIF3Oho=; b=5x9/E0fmdxV/derCfxo92YNdYBB4cfVuoWeaxVnEtYMYSk+1KV5EdipXm4y1/wq1ISKAWq Lq1XyBH5pc8tYxiKliW0SLFMvkqQQHL/Thn6798PNUPmdB28G8BbhTrK9ghJuXobH1GdU5 AusCMRw+UbopVZHERB77g0LZDfqoyzc= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=cSmWydW6; spf=pass (imf16.hostedemail.com: domain of surenb@google.com designates 209.85.160.170 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736526571; a=rsa-sha256; cv=none; b=IqoFQr+9SeLBtK10FKCrCnvGXD+J8eJ5DcJyuyFzvzNpo0CNDuzXeOjiuZkf7ftJejfhxL SBSj9jVVuK7qK9paHEXuPIh6eiZ5mmBswW3Pi6AbakZKfRBiDqs+0DIwMqOFLi6cYWZzC+ KMGBbdhBrP07Dh2WQebFnwxQ+hsJw6w= Received: by mail-qt1-f170.google.com with SMTP id d75a77b69052e-467abce2ef9so272521cf.0 for ; Fri, 10 Jan 2025 08:29:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1736526570; x=1737131370; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=eu8TRaExi0UIhJwc+M0JqMAQBG0xLG2ReZQvaIF3Oho=; b=cSmWydW6Hvqq8ZL/13gg59mY99WV+EMyzQpVJsi9BK7UX0P5UA7PnI5Z1DyysybJEM Dep9UOZCqiMhzUejpPZ/JR3KPl9u5vaBzDaXSHFNsOfm9C4uToP/tTo1KI63Z/IrV4V0 jQnxyhNMHh7W7hbkRjuPKw81n9gBFiM8ZJQCZ4sGfWxVczDCPRhFM592aT4TKWcz+P1X r998I9nn7Vp1e8P8Qj66LeFTLE8j9egdHgP1ZxccwtL1aRI8HfqSm/IJ4Lws1MQ0B/5B lNMbaNNWEysvhAEan+490IzZMa/pfckZwqByUan4q6HnAK0axGTBXzBybN6VGVtcCScQ elsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736526570; x=1737131370; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eu8TRaExi0UIhJwc+M0JqMAQBG0xLG2ReZQvaIF3Oho=; b=REPWEphCU3lJcYJ5qG1ch3GhIqjCU+KRABLrSWnGl/5dRuQMgy+SMwaq2IzEnhVZZX FczPw5SDW7PwXJFXYcHs2RzUvWQbCyr59acm/+eg7AT2lw4q5iB3U9Y3GTZnT76UJ5P2 sO/Zq4X4pVjWF5J2E9B33cuqVN5CAj57RCUo4+uvjyopak+I73wyaidXb5e9i6LWWbnR tbMUzmeA0D2jUAznba7NQGqTAiSDQrF2nM06kTxxQ81MkLUkZ3rwzi2wh9Un+EYkyuqF mqDZtQwZl+TQWKrh4nwXpMqLbxAXP3nZ8LPiHoCe19SgKeJqo1xHbqN4Jxzc2n6yEuaP 7MHA== X-Forwarded-Encrypted: i=1; AJvYcCX5BNAt0UQd+NbB6IyQlBrk86YT4ju1FOyDZeTobqIK0KYcdlqU8wlgwbDxa7V3NEdFx2GFIpURuA==@kvack.org X-Gm-Message-State: AOJu0Yz+3gbOSzWDITRP/+NlgE6RVSri6cRrW9KSWmg8LwevzRmoL8Fl 0aDZtOjWU7s+eVHZbL4+HFwGuRokcZCAZRKWtI0burWKC3A4UiaHvmwjG9dCF44TZmTs1EvLmhK xMHKaCiYk8TcLT3e3ub6HEYFWTa8x2gm1gGEE X-Gm-Gg: ASbGncvaAlHl64qLsZlHOi0VvaFW8FBD6eUbOo7CVsKVf7Q8kOvj3kVP/xwQa1804Dp Z5+IpB2kC7KRihiTbbbJxynD37xg3bGqFIiZrSw== X-Google-Smtp-Source: AGHT+IFqQbIhVyUUTFC28OXn+dsnTQM3CNfx3yLk9snNxklRt4li4TDpR+6Ie19J7BV3gtQHsJDjlRKNHLRabTqcWNc= X-Received: by 2002:a05:622a:148d:b0:463:6fc7:e7cb with SMTP id d75a77b69052e-46c89daa62fmr3027231cf.11.1736526570363; Fri, 10 Jan 2025 08:29:30 -0800 (PST) MIME-Version: 1.0 References: <20241226170710.1159679-1-surenb@google.com> <20241226170710.1159679-12-surenb@google.com> <275bd492-7d7c-4b9a-9fce-fbe25639cbfb@suse.cz> <20250110133237.61dd14fb@pumpkin> In-Reply-To: <20250110133237.61dd14fb@pumpkin> From: Suren Baghdasaryan Date: Fri, 10 Jan 2025 08:29:19 -0800 X-Gm-Features: AbW1kvYC5ijjJnRM6yZFH01U301Y6RYr4o7F4iGn7Q_jcoCDMuHg--7AHRcIRcw Message-ID: Subject: Re: [PATCH v7 11/17] refcount: introduce __refcount_{add|inc}_not_zero_limited To: David Laight Cc: Matthew Wilcox , Vlastimil Babka , akpm@linux-foundation.org, peterz@infradead.org, liam.howlett@oracle.com, lorenzo.stoakes@oracle.com, mhocko@suse.com, hannes@cmpxchg.org, mjguzik@gmail.com, oliver.sang@intel.com, mgorman@techsingularity.net, david@redhat.com, peterx@redhat.com, oleg@redhat.com, dave@stgolabs.net, paulmck@kernel.org, brauner@kernel.org, dhowells@redhat.com, hdanton@sina.com, hughd@google.com, lokeshgidra@google.com, minchan@google.com, jannh@google.com, shakeel.butt@linux.dev, souravpanda@google.com, pasha.tatashin@soleen.com, klarasmodin@gmail.com, corbet@lwn.net, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@android.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 72922180007 X-Rspamd-Server: rspam12 X-Stat-Signature: efe7ypri4nbz41g9jsqsqmc9qidzzzah X-Rspam-User: X-HE-Tag: 1736526571-465587 X-HE-Meta: U2FsdGVkX1/I6q3ShIFG1Maqly6m2zlR2hCV4pI/9845Ggn0pUG7aU9rmtcCnOWQhnHgBjfgKAXD7fKIfM5EjabLCAD54VH5jHPpFOX4FRq3xtrBvSIeAPgJJccsbX4Ff863wLtMt11aL6lYDuL2yaieSpDaBudB+0+XcZFwcgXjp8EzvsrmOxxbqE0Uum+5+WhSG1/nebt9zV/MjUn+oHUwYbwyIfsbR0X65tQ5G2mvH4hMCgA+YZnOvjm2r32S2seW0oq2ty9Y9BoS5GMPolfXu8t+Uu6+pB9Vn8f1hmKdfw2tsCRPHqh9y1ht6UTrUubEh9FpQ1QSUUnhil2VJ9T0eB9AzzFL+gRftsR8Az/UY3uyE3cL2RcF+iT8KHA0+WuKc5QDh51uVW5ntuZc6YvZZZ24QMOyNrUYZBpuX1XM02VfATkr6kxNJ6uZ+5NwOUl+wCm1HmVHGfDrPywDVscuVGa6rL5hH4hRYZHbLCPN/eX0V7GXIigR+v+iR3WulZIvd/XNmB5wVWpwk3/qZ7qbSZBrwuyOcK2eIiTnWq3uH8kVHfIVUf/G5RnDoyp5+e+gvXdp9qntNTV296BXmWkJkLGc5WcmYTTqPelzhPf6jwKv24gnyr+i52WsMLgK5gfRxbPIH+fNBO1gS1B9DAoLqzK6iDqEC1nZoK7U66vc/lgZOBmv+zkbg7ABtEdqA6GyJkg5s5LuxQ6AEpkNm1tnfp4oSXvERBYCDVOw+ZJ10Vp5EZOrSU6eiY6Gfj6PHtPcg1pMyDX4h+E43Bjp7Uz+ckYb8W9vXb9HdNOUpmz7E9bJlrfF4Gv7hUD7Nqvw8yR1Dc/wPU+ddh3j1TP3zVO92gKHXgffy30O4g0D/ptEFPSmLAMv5sqZYgf6GbrZx7+mI8SypMwQQ/Gp8yHEiL62/JbSb9gc+BBgrijAuhNbz1S/UnZWTYQ8r+ItnyxkIm5WFj/yM7p8i14zox0 OuxyqSCa fW56Gab/d4v2MwenCJp338O/2/4HN33XYsSZYD3LbeAbwJET8bwTTceXxAc07qFDi+MGJb19Pw5dTLV3lGkGtnXVRHlbEOOPczNpSVK5OU9EZnE59RicTD+lfx8s3dtknjY3i6Lxoh8AsK/3TGj6Jao58QB5oNF9rMiHkrBwy4ule+mud2pqSZ0jcXb+lm0IsnuN/tpcVrOP5JqcefwbN1bf+6EyGfqmxiMJJq41tqsz5hY8nJq6Vovj4vwbGy8++qQvvqBK+tL0lPVbVAnKNVDgZCAX0JEcQjW2jUsLWlT924mqj6Cqzxz27t+jRYgMtwTlP2kAHnImT6/Bd10qZIDq6sucR64xhxKDMXM4IVwFu/1G5Aqmz86FdWbOjC8wr4zgBpbRnevgovjyu3vme5rq2rhChxExKqywh2EwDslogCSHtEX79K88tRxTWlyOjP9nY 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: List-Subscribe: List-Unsubscribe: On Fri, Jan 10, 2025 at 5:32=E2=80=AFAM David Laight wrote: > > On Wed, 8 Jan 2025 15:06:17 +0000 > Matthew Wilcox wrote: > > > On Wed, Jan 08, 2025 at 10:16:04AM +0100, Vlastimil Babka wrote: > > > > static inline __must_check __signed_wrap > > > > -bool __refcount_add_not_zero(int i, refcount_t *r, int *oldp) > > > > +bool __refcount_add_not_zero_limited(int i, refcount_t *r, int *ol= dp, > > > > + int limit) > > > > { > > > > int old =3D refcount_read(r); > > > > > > > > do { > > > > if (!old) > > > > break; > > > > + if (limit && old + i > limit) { > > > > > > Should this be e.g. "old > limit - i" to avoid overflow and false neg= ative > > > if someone sets limit close to INT_MAX? > > > > Although 'i' might also be INT_MAX, whereas we know that old < limit. > > So "i > limit - old" is the correct condition to check, IMO. > > > > I'd further suggest that using a limit of 0 to mean "unlimited" introdu= ces > > an unnecessary arithmetic operation. Make 'limit' inclusive instead > > of exclusive, pass INT_MAX instead of 0, and Vlastimil's suggestion, > > and this becomes: > > > > if (i > limit - old) > > > ... > > The problem with that is the compiler is unlikely to optimise it away. > Perhaps: > if (statically_true(!limit || limit =3D=3D INT_MAX)) > continue; > if (i > limit - old) { > ... Thanks for the comment! I think it makes sense. For the reference, the new version of this patch is here: https://lore.kernel.org/all/20250109023025.2242447-11-surenb@google.com/ If I apply your suggestion to that version it should look like this: +bool __refcount_add_not_zero_limited(int i, refcount_t *r, int *oldp, + int limit) { int old =3D refcount_read(r); do { if (!old) break; + + if (statically_true(limit =3D=3D INT_MAX)) + continue; + + if (i > limit - old) { + if (oldp) + *oldp =3D old; + return false; + } } while (!atomic_try_cmpxchg_relaxed(&r->refs, &old, old + i)); I'll update the patch with this and let's see if everyone agrees. > > David > >