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 416E8E77188 for ; Wed, 8 Jan 2025 15:45:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CC6AB6B0088; Wed, 8 Jan 2025 10:45:16 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C76F26B0089; Wed, 8 Jan 2025 10:45:16 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B3E716B008A; Wed, 8 Jan 2025 10:45:16 -0500 (EST) 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 933706B0088 for ; Wed, 8 Jan 2025 10:45:16 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 43EA3141254 for ; Wed, 8 Jan 2025 15:45:16 +0000 (UTC) X-FDA: 82984708632.06.0F51280 Received: from mail-qt1-f173.google.com (mail-qt1-f173.google.com [209.85.160.173]) by imf04.hostedemail.com (Postfix) with ESMTP id 6565640019 for ; Wed, 8 Jan 2025 15:45:14 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=vxX2JfjT; spf=pass (imf04.hostedemail.com: domain of surenb@google.com designates 209.85.160.173 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=1736351114; 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=ut6ps4BaR+Fx/C+Oe+D/lHnuheHFjut1hUSjP6yraP0=; b=rU6hsZpwuBpBX1b/RVIv0meoLogoy0GQQFQafT6dKyWT8YxWpNy3hbV4OIyDkDxYU3hoyY rQ6BIivCZTMms8dey0rwQR0ehvU1SO0acWLR2ctNXLtWLV1+VwcX4VX/XvE9nGKu5Ses7N 4bjuiej1njVG6jvYyy63LuuQKrkwX7o= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736351114; a=rsa-sha256; cv=none; b=Usdf/BZX5PR7slTmCV0Ni+fNW5fMgCpivWEF1AJ1jhK8punaYUk7OUv8Ecxr5jhHBDl4sm Sn5gkIxZjXZZfazG++ZI/YthWEhPQQz1E6I1nI0vgwqRfeyDKc/wbSZBm/1K/HR9Zk5Hiz VT7vA8cUuXiuxImAPOH6FEwEpMoQuw0= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=vxX2JfjT; spf=pass (imf04.hostedemail.com: domain of surenb@google.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-qt1-f173.google.com with SMTP id d75a77b69052e-467abce2ef9so253371cf.0 for ; Wed, 08 Jan 2025 07:45:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1736351113; x=1736955913; 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=ut6ps4BaR+Fx/C+Oe+D/lHnuheHFjut1hUSjP6yraP0=; b=vxX2JfjTIy3jXeY0bM9F7NT2olmCKXAASjEfSfaPQ3HOkiJjGg/xOg24m8/AcuPy/K FoVjEXe//TTZsW+xKlrdd7unIQNkCt6i5/1ylF6PYakQ9JVqnPybpx/AFI4sPWYnntia wK7AcTXniVUgSVNAQqxayEcZ+20V7nDYgVzG2Vaige/pc9aFuMo1RH95acj4XpPekm5c 3+i4mwwm4eIpt/HC0OEPYUNV7M/ZZMBtLEecIejHgeaN/JcBv8Yz1X9ii5mJcVepJ+xx R6NgErMtfedCWD51+Kl7x4ReCyXgpxaT01y4PadWU2xM08hxfdSIeXeIAjBg4HdviPuv /vig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736351113; x=1736955913; 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=ut6ps4BaR+Fx/C+Oe+D/lHnuheHFjut1hUSjP6yraP0=; b=P1vwVlC6PY+oWn5mdyzoMiyT39sj8gmYqDj+hTPgNbtT69JZ/DnZk3XZdSL8KJo/4A 0YfNQaQsaR8fVf3rd3eH4QMUyaai77bdljgzlTsB4jHG0+Zu55CwC4/gWQGf16Pcjhnc TF5kkXraPApDcJf6B6vDEti1NM8qYXKqU50i9dAzqvJUqgNn8QlIN1ybuxIL38Kn/WR5 dPxKhMQXvUJ3wlWW5mnjAdikBNiypU56bMl6fBHJwADXwcCHUfL4wgC4DE1hbtBUD6Gq d8/j+NO0IXZX210atoh6H6LwV+/WexfJtyNE2Uht1iPvF7Ft7k13saxXPUKSRlV1oG8o Ci3Q== X-Forwarded-Encrypted: i=1; AJvYcCWvjcqb59MgxeUsE8/tirN99swh3fIPsnYoZFxV+4VAnouzntcEbrCmyQoseLT80fktl1YQH8McZA==@kvack.org X-Gm-Message-State: AOJu0YyZbHlEusCr1udiRtBN68yP8rGZXnVH4aVUKhZD/qUkfgD0ItI1 fHDc1NjJsV+LzwKUowxjpkmuG+5G/B+7Nvqf5esQtZ2IY6Z9x86/fRXJbKXAwcVKM9/vCkH0j8Q 3fS6nziYG5q7JqkBAtPliYrUv2MiPeaWZU8Wx X-Gm-Gg: ASbGncuKhpYXvplSpXedAwBQo8dW+jYxY+4Qd+qaJxCmyFVUXmfYCCn+XX0sHLWTJWa xYpRanPCMURLOKQUyQw5XdGv+QdMp7GRzzRa4oCH4Shsld1hq7IiJwf98ajh2YBwETWhC X-Google-Smtp-Source: AGHT+IFDX7L/QVbpbCMSP0rEPvza/vRxRSDCXoVQlASwSNMIllfDLg7pmdwGP0XcElQ+pDJQkQNlzS43FuzAdd+N+es= X-Received: by 2002:ac8:75d1:0:b0:46c:78e4:a9cc with SMTP id d75a77b69052e-46c78e4b6b4mr726881cf.25.1736351113171; Wed, 08 Jan 2025 07:45:13 -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> In-Reply-To: From: Suren Baghdasaryan Date: Wed, 8 Jan 2025 07:45:02 -0800 X-Gm-Features: AbW1kvYGTaRM--yaX5OGK2NhrSQEmqPo0zX2_oayvDdLKFOlkk0jbNSqx1ev8GI Message-ID: Subject: Re: [PATCH v7 11/17] refcount: introduce __refcount_{add|inc}_not_zero_limited To: Matthew Wilcox Cc: 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: 6565640019 X-Rspam-User: X-Rspamd-Server: rspam07 X-Stat-Signature: w66k85hnpr9fisrj18uu9941z6c1cp8w X-HE-Tag: 1736351114-526520 X-HE-Meta: U2FsdGVkX19aVJujxpDCyrsHR3QJNlfK7NVhayYIlIBzEm+n33Tih/5ddfgQc6HIzU8b8uB9RHWDL1JqKls3jvCEK6mIU2/xKjNKJZBbtxc0n2QHrmCqu+Fbc+fmfuEWw0corXUxvcAX6BnQi8hgcXbRRkoGwcAQLb02ilEQcn5jv2JlZh8TBYBC3my07TZWvz9J2ZBBN6gH8P/EWvXsHnVzlVEN/UVAvoUe+7xQxpWY7bAC+1vP8rD5CMiCGVHwA2jACZJKEE5uEyMkhQkqQktMZPY5ZSNB29192w1c/dnyw1MMxDWz7TLACgLFpI22kFnDqRDxJz7Jdx6nYr+OK+hlXS2kPveZRAbX2g+CLDbltw965bZuKnynb3jCJoglzKL90s0zphVs1fPnP2KP8bGvv1fD5SRpWjd5l6BZGUlnJvQ2mR5RE4rIiM66xaWGfMsASy0tynFbv2oTFLGcP6to7f5RG/pz1Hv/nC/jSjj4L7cM98N5dwrjHH2uaXY1LcJNh8mPXOF9rYDIOMzbq/XcQcOXfNTwri/dzTNd++swHcwtKi8gMG2HvvMhd5vVOmHTDFo23750YoiUashDrKSWpiI2Ec7EGgECIYLkw1/8mZNNwfvgfKB3DyTmmowJ4dCqCQR3RwO8iCnWYR9p6ddHugunct7boF1h0D0rGpyCUyfaZJGeX9gZ1rGvNOJbuLawTgDkScD6KVdnATNPkH515qnomyOWmjVWRnCP73jELL3GwLDbra8+52Kdw9gn21L3MZz3Up4ZRWIe0RPNM3SQ3XKJM8WodJKGY0w8MqiwXEH6K5Kc32JlyspfVFbYETGIoLDO9+h+1CgqkHtQ9xEjI5e3CmpwILWVlH/tADDwAOJpq+yHhixBBl8/UtCPtF8FWn4BsW2Ufb1UiPzNYQ3ZTZ4jybEfButSzuyr380Ht81sesbjz+KJ6JDkaQTcFsLZfqMyBTbK0ZURRyp lHHmMtyV G2sxKczdEMZ19aeDrhEBqOKwDb68ILWh0Eif/AXuKycy6/EGwM2nGTmZDXEfR08IzStaB839VFELqMQ6vQthT/uWFU5ck50wo97JI+cWKRLK/v3Ibe4I8Lw7LQaNLN3exg/e//XtleQoW4ydOacApl6+HDGojSBhFMH/qspFaybjlT6uFdWw9x12VLj7+ix4JDCsTrzcxPKrrqGce5i0wL7WhGP/EM5OmweIYap1a+CQDEIp+l2p2H/Pcm0KppF0jE7c3Y7PjMQu6RvkJIDy+SIW3QpYhic6qbHOWvr8VrkyrKXU= 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 Wed, Jan 8, 2025 at 7:06=E2=80=AFAM 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 *oldp= , > > > + 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 negat= ive > > 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" introduce= s > 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) Thanks for the suggestions, Vlastimil and Matthew! Yes, this looks much better. Will use it in the next version. > > > > + if (oldp) > > > + *oldp =3D old; > > > + return false; > > > + } > > > } while (!atomic_try_cmpxchg_relaxed(&r->refs, &old, old + i)); > > ... > > > > +static inline __must_check __signed_wrap > > > +bool __refcount_add_not_zero(int i, refcount_t *r, int *oldp) > > > +{ > > > + return __refcount_add_not_zero_limited(i, r, oldp, 0); > > Just to be clear, this becomes: > > return __refcount_add_not_zero_limited(i, r, oldp, INT_MAX); Ack. >