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 245C1E7719A for ; Sat, 11 Jan 2025 18:30:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 239636B0088; Sat, 11 Jan 2025 13:30:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1E8626B0089; Sat, 11 Jan 2025 13:30:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0AFFC6B008C; Sat, 11 Jan 2025 13:30:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id DCDFA6B0088 for ; Sat, 11 Jan 2025 13:30:44 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 5155D1A146D for ; Sat, 11 Jan 2025 18:30:44 +0000 (UTC) X-FDA: 82996012008.08.662019C Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf03.hostedemail.com (Postfix) with ESMTP id 8311E2000C for ; Sat, 11 Jan 2025 18:30:42 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Ovjr1p0x; spf=pass (imf03.hostedemail.com: domain of "SRS0=reaH=UD=paulmck-ThinkPad-P17-Gen-1.home=paulmck@kernel.org" designates 139.178.84.217 as permitted sender) smtp.mailfrom="SRS0=reaH=UD=paulmck-ThinkPad-P17-Gen-1.home=paulmck@kernel.org"; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736620242; h=from:from:sender:reply-to: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=60Ck881WT/nq44vcLz3T7MiwAiGwWM4RRqicAuFJEeE=; b=3vEfwJlgQcszxO5QwH8C/moJPkKcFLyikI6U1DoHbwaZ/cOKvshLrzYkGPgKd8bGa5LeHv 1DGzoeY+mwRonuegATTIrZ3wOj8wX9yNuWS2NF0odBsUWcyzFm18/eUPBexiq8QT4IX3QX uIprejRNp0CE1o4wKFaeeV2a5yRRYIk= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Ovjr1p0x; spf=pass (imf03.hostedemail.com: domain of "SRS0=reaH=UD=paulmck-ThinkPad-P17-Gen-1.home=paulmck@kernel.org" designates 139.178.84.217 as permitted sender) smtp.mailfrom="SRS0=reaH=UD=paulmck-ThinkPad-P17-Gen-1.home=paulmck@kernel.org"; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736620242; a=rsa-sha256; cv=none; b=53tKJvxC7GWb+3JlgtaP2e1d1G4JL5N9PukYs6Y0DyettfzZxQqkzeRDeVITsxcTekUcTc E85W5Ai76bOQ1EIV38msip1OPk5jPkfjIoWHhdbqOqufuHGdqzrSaADKEZbYPMpOzeqaYx RBICVNbYRvsdqRK2dMnnP0dblr4FUEQ= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 343F45C0709; Sat, 11 Jan 2025 18:30:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7663DC4CED2; Sat, 11 Jan 2025 18:30:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1736620240; bh=PHLc9NiC2kTY067hZfPhRdhKH2ChIcsh/a3laGz+a10=; h=Date:From:To:Cc:Subject:Reply-To:References:In-Reply-To:From; b=Ovjr1p0xUrNJg98eI+IrUUPIyV3vNOj2CUIdmPrazjULaQzP31+wKaJLnOvh0t1Jd TuL5IzourhIsQY6YKd3ewTBJLcHdSffxe88Xis2cTbUTKk3grlmpFcgS9gcX+CtUnc 4vwqOAl3muRQb45caBYK7Sbk2h5E9rlNHtVAquxYQgY0P984H35oeIVxjGtmBXfcHk rfIjnHk3hc5jX/6DTb+jltRnkaM/x8UI/i6FvHXfD6V3hWe4h4Qt9OhWVygnOjEGPS nDzIR2NNOxxNsBa/vidNRHzfwXdFVXtPqT/Y5JkKHqHLg1eApszb3gMcq916EZ/OAp mL3kEguI0kjNA== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 21DB0CE0B73; Sat, 11 Jan 2025 10:30:40 -0800 (PST) Date: Sat, 11 Jan 2025 10:30:40 -0800 From: "Paul E. McKenney" To: David Laight Cc: Suren Baghdasaryan , akpm@linux-foundation.org, peterz@infradead.org, willy@infradead.org, liam.howlett@oracle.com, lorenzo.stoakes@oracle.com, mhocko@suse.com, vbabka@suse.cz, 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, 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, richard.weiyang@gmail.com, corbet@lwn.net, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@android.com Subject: Re: [PATCH v9 10/17] refcount: introduce __refcount_{add|inc}_not_zero_limited Message-ID: <9086dca2-3d53-4147-abc8-bf2d1cca0b5a@paulmck-laptop> Reply-To: paulmck@kernel.org References: <20250111042604.3230628-1-surenb@google.com> <20250111042604.3230628-11-surenb@google.com> <20250111123900.643e4b49@pumpkin> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250111123900.643e4b49@pumpkin> X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 8311E2000C X-Rspam-User: X-Stat-Signature: qbfrromniy8pqx81tr3a4pfnha5h4wid X-HE-Tag: 1736620242-358333 X-HE-Meta: U2FsdGVkX19mFLwk7NgLWYrmFbzoprsIHwerpXL7Gg/LkQ1D8Rj7l2J6yRdW2YvJDeeKUSIHIGpyDx3jm57Mqv8N6HdrvijuJQr262GP2SXjrn+71E3Rw2ZRuF7PTiAMjXPlEfdhJXNrlzKkEDcAgJt3tA1r12z5rDikdbVAdawskI89SRQFtUonEvElQTvO5xksw7NBecQmx6/Rpr1dWfpvcseBjQVXAJ6tqYdgeIT55+OncshwYAAVhiQp8cDrttFmi7NwWNDjEldyRo7oxG61uKxA5Smrvvu2xXOdRlAeX7hkaxLSRKPVf/YgbbuWvb+sE7IGJHJhNBVkWzizXc2GUYDQjemXDwZvPCUs0ijOEerAZXSIoUvT1vxV2hkjeKSC6LS2dsQp4Y5JtKLdIcUP+6cBCSUzsHB59yfTEWDgzpKkDVSGkVCh8bqYSZcGZcvl3xEEBT8ICnyonn6W7g11Xl4CDBXXzz6G6O66qXFZE/l2aqpk5FxX0dg8XTBNYGhPGmDMvkg6hXRL4Ktry3cnkKfGxYdB2CuZywXD0CtrPaSy46J3XMJqeNegHhvNCsfB+PKUuS6d7jddnjx8VZ6Y7z72yXv2xWMq84BhVFk3c6FDv5DvcRSBSC95gWO0ETqXBHiv9bAjs6iTBkxnuL+rG5ijroJ6jhqPZuBVo836JMipeoJscyrw+6ZfmNKrxvl4KmWLNvAXnCbBlzTHtmIUQyTZDofypiyL+aEY9sTGgRLSXy92AQRmZU38fQCzcBVwvm6nIrCMnvUxpR+GsbCeIA6u9cspmWnIscPEHGpdvJDo1tmIOBqpt0gB4u29d8PGlOkg+UjY009ScyCCkswWc4wjerY1GQxiWKpi+qH3I2ZaOhpAoLxgQs9/z578nio1N+mcK0X+5eAgxrZGUjUrzfE9Df9emO6Q9er8U6DwlzweaTFuFti1ZIM7IQzvhM6p3N8oinxE08tTIP/ 9AN/63Ys PoyxNaDqEqcu+LszUNxV2Tjo7tAe8s9JLF/Eg+hEffrPztfTyDaGxIIICY/8O2JILzs8gczFvNsl8CFvFNipSJY+lJxISNzLeiw0E+mp6KptIDJbAOuwmYl5ZhECA0G2ngT1NUiuCEati6JFAMda16wGni70p++b7njgTmR8eDCK9I3QCcGHcF+5SVF8UiHqbireTDmL/hObdgP3KUFQfJYMKgg+LNA/K9kBTLXK/gwo4BO7sQmswjLW2wx1w8S5v/T0YzPN4ovqMzgUVA3YdpMybMbSR4bEehNfD2SI7gcIe5XeNFGuYtr7SaEUNdNr5HAABTaWr/gx+9Aqtvud173B0aVuoGS/HELd1B3XwQ5lWb/ZrKAN3JPnRM/+DFTL57/BqdnfBiaQ6nY39hts5tjr+zPZmJzoa1S3KDHq4oMXg2utNhx59LM4QKiCxp6az89z3ho+fRxvEBfVNLvY7+DBqaXcNyYZ+xT6spswI7Ouz6ZoltX2O+cIya0JTz5nDNIq/lUUDPvIbqC/UMdswFVJaBV97JCiqQVxhNlLIl4hat7nLNsJHfCWQSnFcti4l2jBP/KJ99+lH9pcFPF5/zbw0dnw8u6bNHkS3gwFYWZRfuTuI9XR/rNXy/ygabsL8oTwfaOAAtCQRehuaijiaK7X2mqK/JtRlLYiatart9gKoPJNpX9GLpH/Exwyg0WIAHQyh78kZGPkW3zMvbIo1n3hf1/vQzLoxJgDYuoLIv86RHEgoD56GVTT38L7ZoEGhv3I5HGhic+Vqjk4+idk/KLjjeVHyi57ezsg1W7dG2vV8XXY= 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 Sat, Jan 11, 2025 at 12:39:00PM +0000, David Laight wrote: > On Fri, 10 Jan 2025 20:25:57 -0800 > Suren Baghdasaryan wrote: > > > Introduce functions to increase refcount but with a top limit above which > > they will fail to increase (the limit is inclusive). Setting the limit to > > INT_MAX indicates no limit. > > This function has never worked as expected! > I've removed the update and added in the rest of the code. > > > diff --git a/include/linux/refcount.h b/include/linux/refcount.h > > index 35f039ecb272..5072ba99f05e 100644 > > --- a/include/linux/refcount.h > > +++ b/include/linux/refcount.h > > @@ -137,13 +137,23 @@ static inline unsigned int refcount_read(const refcount_t *r) > > } > > > > static inline __must_check __signed_wrap > > -bool __refcount_add_not_zero(int i, refcount_t *r, int *oldp) > > { > > int old = refcount_read(r); > > > > do { > > if (!old) > > break; > > > > } while (!atomic_try_cmpxchg_relaxed(&r->refs, &old, old + i)); > > > > if (oldp) > > *oldp = old; > ? > > if (unlikely(old < 0 || old + i < 0)) > > refcount_warn_saturate(r, REFCOUNT_ADD_NOT_ZERO_OVF); > > > > return old; > > } > > The saturate test just doesn't work as expected. > In C signed integer overflow is undefined (probably so that cpu that saturate/trap > signed overflow can be conformant) and gcc uses that to optimise code. > > So if you compile (https://www.godbolt.org/z/WYWo84Weq): > int inc_wraps(int i) > { > return i < 0 || i + 1 < 0; > } > the second test is optimised away. > I don't think the kernel compiles disable this optimisation. Last I checked, my kernel compiles specified -fno-strict-overflow. What happens if you try that in godbolt? Thanx, Paul