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 649B0E7719A for ; Sat, 11 Jan 2025 09:59:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D60B16B007B; Sat, 11 Jan 2025 04:59:56 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D10C86B0082; Sat, 11 Jan 2025 04:59:56 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BD8806B0083; Sat, 11 Jan 2025 04:59:56 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 9BD6D6B007B for ; Sat, 11 Jan 2025 04:59:56 -0500 (EST) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id EB3341A1196 for ; Sat, 11 Jan 2025 09:59:55 +0000 (UTC) X-FDA: 82994724750.22.5D58BC8 Received: from mail-qt1-f173.google.com (mail-qt1-f173.google.com [209.85.160.173]) by imf09.hostedemail.com (Postfix) with ESMTP id 0EB87140012 for ; Sat, 11 Jan 2025 09:59:53 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=bOBVoKUF; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf09.hostedemail.com: domain of surenb@google.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736589594; a=rsa-sha256; cv=none; b=ptYdv329lEJFNZzE62rWQpYMd77D6gRn1JlVnarspkcmP+fOrNAPwmACFjv5gYtpxlci1y 0d96OkOqeZ30VpGBZyTK/+9RAKxQ5WQW5isEyiKA/jkBAf1lWxKj5JMREGWJY38ktn2J0R 1/VRAQRXthZLgXFS2UmpmijtDZrZuKI= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=bOBVoKUF; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf09.hostedemail.com: domain of surenb@google.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736589594; 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=EvgWkH0CzWDgmxYOMHKwFRq9aX6lgNdXqbcjSm6wuiw=; b=4sE/ysCMn7hSztUe4KalzKJYHZy7yht/9Pb0BbHfsmfAs7GZ4z48pjMLBIi3Avk7pzyS93 cEBZVvjZZCOASU80JB05DtkVKEX9WLPAZxW2AngW1bYvz6zA4w+Z6WALsvHzQ9vpptsed8 PcyVTCHntxvUx51jph8Kgn2sjH+gQCA= Received: by mail-qt1-f173.google.com with SMTP id d75a77b69052e-4679b5c66d0so26791cf.1 for ; Sat, 11 Jan 2025 01:59:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1736589593; x=1737194393; 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=EvgWkH0CzWDgmxYOMHKwFRq9aX6lgNdXqbcjSm6wuiw=; b=bOBVoKUFPKA+dhY3zSyP3nQieitPmcFi9blmj7h4V9UoVgDZQXnwiDY2ozWdV6cXEv 7IqoAwFCX1afouBs4HdZV+wtFrNM5qkjvlxKExQpEBLRDRd8bbfrL4rjBjrWUhOaaJQe r+kxFnfdLXfA+C+WdJRjNIkZvP887ZSLYjDhhOEWX0UDbF9viKEvxpFoU9+DGNkVg599 2UzKWnUBU9ut6WGAwQJBnrcsGLuOHZKyfCyzelA4cZOQ3NqqtdVvEC1pZ8Hxpg/R+LN6 +tsZ7+R5ECYS5SBRv6DKs6upgW7Zj+kgOSqhiJJV/lSQHnDQJlVun2SBTe5If1g71Co8 bo/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736589593; x=1737194393; 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=EvgWkH0CzWDgmxYOMHKwFRq9aX6lgNdXqbcjSm6wuiw=; b=qDgxlnlkJaaZUf2Q2Dng01M0JU5a2wtAphFqWpmtIFPsSMxCCwSfD9UAqds+HLfAw9 apTdwnDR9xFybkirZqwTFZLNzTozTZYA99f1Ro8zQlLWAkXXiNEXWLEYFvSJyKi9qIKh 6hgQvaoFOcfKnkBv5GAzjWS1i0Z7fly4kL7KFVHXVgoRhWVl3QR8t5Xs8auL7SiMbADY ef/LAqr7owZa9CIxXOZepzDxts10iyzaIdKg0EwWu0CxOk4cbFpasrNSqMAi7tuzWXNf Kh1OnGDZcZcvZYOWwIVihhIIecjlAkXI8nVF7rF5QXdAYTw5JOMhG/6Tq+BVR28ZhCA+ XMrg== X-Forwarded-Encrypted: i=1; AJvYcCUNaltJCvkD/OZ8T2xJFNwmE0fDQpht6CSoChorTGR11uQS3ZCAdjQg3Ms/7PIjUxcbfIVoH8Howw==@kvack.org X-Gm-Message-State: AOJu0Yx/0jY0I9VHK74uI26RewoKqUU2krS6C3z0OcnFKB777OhHwBmK TTaroN/gVNUD269GMGY/rq5RwdhZkykzcWiXzsREif8YMksjef7Dq+VI0inzBP0N52Fi5A8qKmW 1c6lIeRuGGH8KVtIdYl9eomaDw2Q1oQcWZR8s X-Gm-Gg: ASbGnctk/I/cWcRmO2Anj7Btu5e8+QMr0i2XLsuxuVC5waqudxW/JGChR5snqaUJROI paJBsta5Dk8SzfP94/t2XoZu4nX0EdMYWf13Xrw== X-Google-Smtp-Source: AGHT+IFE3cvzBrasaxfPyd9G6LXWg2zV7BL8x797LMbTdIxrivlsvR0VuCDymk5tEm9lsq7BsCHDYc2rmxjlZxTAAl4= X-Received: by 2002:a05:622a:5c91:b0:46c:78e4:a9cc with SMTP id d75a77b69052e-46c89deb173mr6240981cf.25.1736589592872; Sat, 11 Jan 2025 01:59:52 -0800 (PST) MIME-Version: 1.0 References: <20250111042604.3230628-1-surenb@google.com> <20250111042604.3230628-11-surenb@google.com> <20250111063152.1638-1-hdanton@sina.com> In-Reply-To: <20250111063152.1638-1-hdanton@sina.com> From: Suren Baghdasaryan Date: Sat, 11 Jan 2025 01:59:41 -0800 X-Gm-Features: AbW1kvZJVW9bsOvlKo_mFVDO35a99ctNIZxqEMMDOYUsMJyQmcZ2FJRCH6mlnPE Message-ID: Subject: Re: [PATCH v9 10/17] refcount: introduce __refcount_{add|inc}_not_zero_limited To: Hillf Danton Cc: akpm@linux-foundation.org, peterz@infradead.org, willy@infradead.org, hannes@cmpxchg.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-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 0EB87140012 X-Stat-Signature: fdhzm95wejxhmjfqrorrthspo4euwn1w X-HE-Tag: 1736589593-289831 X-HE-Meta: U2FsdGVkX1/AaFTJjhO/izTzNRTSZEpXOe0NptjurJndu9U95o3hcE0/yqRNICqyeIjqwIgAKynLt2h1Mvp5U/K/P88wVI9E+Jme3P64Eea97AQOSlKcte/UYwr/JAxTOwG1fvPnCgL1+UazTMSEH/FYqHfWZKXhB8BzuBD5Vz0mVQ4/ttc6KS59pRofbOYU7671zz2zKLVZDaAruIXLc8TTlt3hJTJC8hUIr523nk8gHJIrMK51IbaoI7u5B2MVhzJROO4LYZWdHoq23sfO7OGTeeIukMVdvvBItfIszf0e16ICjLP4515XIROA4Dq8+osZT2W4wnrLPCHL7dq6NlmBmervMLoV5qQgTyu8OZ6p64fzRZo8pGhn3QDdGeUk8WM1DJfI64NCL33zA04SJCmBgtR3CUih0kIv+snBgD20JcpWBDYhgCXbmL6Ng/qMhhzQvsiNu03C6BzNVr5/CCjxI3waCDxOOOUSJ3iDnm3fM5NV3+bfMOPTHkZBToXBH/fHQF+qPGrTGKna3Ai/2PNs1X02RgD3Dh8AMPv/sZ7uy2uU7sDD023pnSsV+aqWCDQMPYpVuYJN7aPBO4o9alRnOTsLFP4YwEV0tcmaxp38eE8TJQsT1FsS2GIyW4imzW0Ubu/vURZlv1NrTW87pNdw+JE6LVemTF9/vQeny2Ij2UTy/+N4g0L5STYrWqyNLOgiIwuIVU6tEBppJA7kVGeRG8PYchR3rfFxrEJZnhBIwyDTKH076+Smv1qwZdier8pIgpE3ff49Y7nXTJObTMQgshCJfJKRT5ZeNwJe3CRSVV0eYUvFOMWgws6Djpx/Ecg+DWz65RCGr56Pow2LaJ1XA76104YXMXdBe4x04jqqeOdu7ryVakAGyQALKRu6UVYk4++LkALIXNLvmuzpMYJF1zivU2vmsKF8nxOrJsRiqMhlexDzhwTrbZ9VBf2GvPASKohW8ieXN6MsHI/ aDeEgAzJ kcF1aDmkbGJPdps4JRJ0RPbzmI5BdbUmtErkiox1mjHvTERWAQhXl0uEZNUlLaeoBEgWfIszOPkgxx7Wtc5n6XWLIN+JKfxf7JakooOF8OzEWzaPeEfZVj0coHqbvMPDP/uWRxW0nYRLgnBcLQGsnRDn/iKOqHkgDFFAYDMpksUi89cMj3nEY1hf7qV7+5JuRniU66FR42JBVZubuwMMF4r4AAko/IY3Mbyhpe9ca1DeZLI3F1kNQoBNGH10MPz+SFOl7dogQKUG3mOchmYXhY/9cz0Lbl6ALBtWpQaTKbSKsjYxiZJ0JtDRFmQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.058843, 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 10:32=E2=80=AFPM Hillf Danton wr= ote: > > On Fri, 10 Jan 2025 20:25:57 -0800 Suren Baghdasaryan > > -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 (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)); > > The acquire version should be used, see atomic_long_try_cmpxchg_acquire() > in kernel/locking/rwsem.c. This is how __refcount_add_not_zero() is already implemented and I'm only adding support for a limit. If you think it's implemented wrong then IMHO it should be fixed separately. > > Why not use the atomic_long_t without bothering to add this limited versi= on? The check against the limit is not only for overflow protection but also to avoid refcount increment when the writer bit is set. It makes the locking code simpler if we have a function that prevents refcounting when the vma is detached (vm_refcnt=3D=3D0) or when it's write-locked (vm_refcnt > To unsubscribe from this group and stop receiving emails from it, send an= email to kernel-team+unsubscribe@android.com. >