From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from YT5PR01CU002.outbound.protection.outlook.com (mail-canadacentralazon11021114.outbound.protection.outlook.com [40.107.192.114]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3BDF12C11ED for ; Mon, 16 Mar 2026 14:39:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.192.114 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773671961; cv=fail; b=YUWSeMJJA96u4fKD/TjFH+Mf2SZF2/2yvsnEsi92h3mh2zWqg1dXRnKkPqoEjpdkbIH3pIDNFqLzZ028xTMQdTXdq7OBEZ7/7uqHkFwEKOi+HzXnVYv/1AZo/h63U0FC7ereJoTt/ygDd5uWRw3IQWKMJ2fjSBbqvbtzareIpFE= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773671961; c=relaxed/simple; bh=JrrzMrFROh50ptZvpnXooaUkv/f3VrIPtC1jC9tJxyo=; h=Message-ID:Date:Subject:To:Cc:References:From:In-Reply-To: Content-Type:MIME-Version; b=rjhhNzxz8FBwBIJxeu/yjRPJt0OjehI6iOArJ+/c0a8HnkDCLLqd1mqxnen+Zx8Us35UkHeDiwOShkCIjP+miHc4Z6uIJUkAbA986PayMW1/5gV44NJpeYbfxGE9ny0TlX3CswEdf32FTbWhpbBssxVHtKNFYJd8pb2TbfM/3pY= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=efficios.com; spf=pass smtp.mailfrom=efficios.com; dkim=pass (2048-bit key) header.d=efficios.com header.i=@efficios.com header.b=OVW2y59n; arc=fail smtp.client-ip=40.107.192.114 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=efficios.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=efficios.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=efficios.com header.i=@efficios.com header.b="OVW2y59n" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vG9Vhov1AjqU/wtlY0cJgyaiRcIZCx6Mt4LNpfNnnQeHNiDiTTVJDTeNAnqIPvSNgd26wnj4iZ52pk1IZ8jT8dcTwuMKIkrDtStdMRi/fXpJTPhmaEciDb131gr6488Fh7V+WeNNavFItWea0LBuUKa0UlY2dZlAJUMmb4gK6i9QZdVN88DqWyR6lLBq0YDW0EFvGTd2AxeBTuEYRXHE2Eol3Zfg63D7BiYcnDlveBT4QyAfzmQpx3WB66m+ev2EJzQ470TxxE9WA06V0G032VP3R7qqNiin2SYm1jD7pqFCmy83c/TMvfdmS4Ay9b0kMCZjmmk9iVwq8j3re2nRww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Cr4veuG87Wac158IoCJd+ddpMFQgViClDMpgvJ7I9P4=; b=BFs3/ePNQvwfWGEN/lXds3+3aeg95603wMzekSNwDXlv5noWOuLwykCoyNaQUjmHgctsnk7wrtyQUTsG2fk15KKr4rCCfCNkF2uqWMkYcpWUdNDzGV9WnXqXf2zA0bddfBK7MjgsyoRZGkDpk7QoGeuGCkRiY/uPrjUu7Pw/j5UBlmdOE6mamTZtxpCQZmkbylmo10ykESiO3OSsh67Xz0VVnO/ZC4by9Z+FdyqAYcc1tB5jKZFBJDDZC6ozg9Nbk3vMmmYe6OGGSG0BGdcN4gyDItJuAt1E3mN2K6KOpffzDmoAl5N3cF4d7rhL0Fd9DAxsEwJ9G5mwLU9Q4i6/Aw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=efficios.com; dmarc=pass action=none header.from=efficios.com; dkim=pass header.d=efficios.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficios.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Cr4veuG87Wac158IoCJd+ddpMFQgViClDMpgvJ7I9P4=; b=OVW2y59nL3mHKm5IMA3/MFlI+r9LtylJONoOXzvDALFgArw2xbl+f10LMfZJLEOGDr6E0CyCIW4gWd3/eeO8HHwj7YXwgVA2PdMTqlvq1gmIlAAS836hwH06V4vlW5kDEOFpMFA1h8kFSF+AjN/CKvxCKuMJD5JMkBbpD8Bhi2T/rPglMYxu9q9gK6jkUsJ/3NuLVdCcH7wHTr9zQ0mu1qICmUWmSg0n26CFL45kEDQUDkatEgMm2cvYVcI4FfxfKu317yhHx3IwLA+ehJxMmK7rjtlsSGX1pgmBy3WbiqbS4WJZpdMSdaArQxHHgNbvrRAU3tFH48DAqMKxv4/CTA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=efficios.com; Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:be::5) by QB1PPF88FEBFFC0.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c08::25a) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9700.24; Mon, 16 Mar 2026 14:39:15 +0000 Received: from YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::6004:a862:d45d:90c1]) by YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM ([fe80::6004:a862:d45d:90c1%3]) with mapi id 15.20.9700.024; Mon, 16 Mar 2026 14:39:15 +0000 Message-ID: <56516363-e004-4d83-a231-5fa70b2f541d@efficios.com> Date: Mon, 16 Mar 2026 10:39:12 -0400 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/2] lib: fix compare_delta parameter order in percpu_counter_tree To: David Carlier , Josh Law , Dennis Zhou Cc: Andrew Morton , linux-kernel@vger.kernel.org References: <20260316143805.36805-1-devnexen@gmail.com> From: Mathieu Desnoyers Content-Language: en-US In-Reply-To: <20260316143805.36805-1-devnexen@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: YQZPR01CA0034.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:86::18) To YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:be::5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: YT2PR01MB9175:EE_|QB1PPF88FEBFFC0:EE_ X-MS-Office365-Filtering-Correlation-Id: 2188b002-fe06-40ad-291a-08de8369cbea X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|7053199007|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: h3AyAa0+UPQWUZjbUrwxXe3wqRqxCon61GLvWHAYjbIuKojfhn2TCwBbf+s6sftaCyxVjBL4jwFAIkLFAb+U8zq0gOcBD08s/wB0WJRMN+xn02PsVVD682hBkLWE52RTifyJaUMLNXqzVHaXlwLlt508AOyb7ztKtuClNql8yzt0cmKYI7IhPiJZsVCKflcX18EBijpcLWVCB/ldKDYi66wHCGW1ZcP09Xz4YNeeWTTth0LRZvAfj4bJigPfD7wP9tKsRzGbho50EqyDJnSsHkRv/YiyDCDy7ejwQoTItcTrrEvfJPvvJF9+O/xIAzMjeUqG7HuNzBqf4FGL0p9wRWdsr8x20lNas/gOGStcU6hwGTVLBNIiukg+1UMBSMa06EeI5SAy2ioKAUye2jtdMfxifZ7pOORtM2MRBavjz8DLRMAgWYyQzqbcxT3PdjDq5X/FZAg5U2i+fvmCrtOd1vBGif6hgPjD95+E3bS9uJGC9eaZQSM4wF6Wmx6l0GRE/5q9yrbFy8kOGiYAdFdDVVoUPcOZKSbrRGpPzicjvg4Irsx4t96UJdA9WdSnJorpPnZH6Mhn2UdGzuyRt5i16pBarGaZfWw2/2oUFc+xSFExLXucsPkFa3sdMx1sVQhH/VdF4SopbNOxd+Z48slTBWgzecGICvlDeNNGE0NupLpK5Y3tNEqFH7J1ZE4DZWX7 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(7053199007)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dzluNE9PVUlHam45Y2loV0dOM3dTdlBNc2NDZGtTN0lJaHc4YWhZNCtOakc5?= =?utf-8?B?RUoyY0FjS25iVjFud1Y0bjBFNEZWUzR2NUxsMkJhT0dtVWZkbEppQndhcVpP?= =?utf-8?B?bzQ0ZzVqV1N6d3BSV3FWMXB5aW5LMkxaWGFYSllzZS9tU3RuTE9jY0JhSzZO?= =?utf-8?B?NlI4aUdia3NBRDZtNFRxY21WSnorNFBJa0hGWmYxQXRHVU1EZVZiS0g4Sjky?= =?utf-8?B?aXh5SmM5Ry9heVZPZlU4dElMSW5SN28wNGZqeitXZUljN2phaTZEZm5GeXhU?= =?utf-8?B?Wm50WURNQmovdXRrZXhtVkk4akl0UEFWZ3E1ZjRRckNFWmxXV1dQR2lqUHdW?= =?utf-8?B?cnBWS2x6ZDFOQmpQb1I0Y3JSd2pIRkc2SEd4bXVXVUR2ZVRVY0x2UUkreXBG?= =?utf-8?B?Rmw5MlA0SU52RUpJUHZZNlJiZkRPYTJ4bUt6bkNNRWhXTWRFamkwbE9zdjlz?= =?utf-8?B?Y0xoeWhzMnZiUUlSVnF4T09qY3RsNVNhRWVaeHRQT0dYTzZXdHRlK2pRZjRn?= =?utf-8?B?d08wcEp5WlVIbjJqWEFBVy9qSlp3NlhoMFAxdjBwSVBNS0k4Tk5malhiQ05l?= =?utf-8?B?UXBrcUR3QXZHV0pEMnhTSWJXQ2RhVytYMm0wcUNEcUlpTmJPVzdCblN0RG14?= =?utf-8?B?NzRvb1J6a3Uvbng3dlBOOVB3cVRmM0c2WWdsc043VHFpMS9pc3V4Vzhqb0M2?= =?utf-8?B?Zk02bDd2SGx4dFhRMmpNS0tvQ0pNam51bWxWMG5KeExFNXZxcXo3TCthdHE4?= =?utf-8?B?RGpPNWNJWmR6QmtqU2JnRndLZWprWEx6NndFb0FZOXdLRVNVU3lwajJMZUV6?= =?utf-8?B?WmZEbTkvczJOMCs2bFJ1VXlwMVgxSVVxZWY0d1FnclRzK0RVdm1HZm5mSml5?= =?utf-8?B?alFOamlMZ0pjdVNpUlIxNW04NjMyRHVaZHRsUWUwR01uVVhna1NYRnhxM2lD?= =?utf-8?B?YVJpdGxZRy9kTDBFUUhIZFIwN1F3UGNRWTl5TmhwaTNZT2RUOS9xUEl6cGFh?= =?utf-8?B?SEt2OHpQc2lUNGYydjQwVnpoZlFSZEtrNDJoZ3V2ekJFMUNVMXhhRVhFRGxC?= =?utf-8?B?R1pJdDV0KzBISVAzeVN2cDR4dHZFVUJlckJSMmx3WTRTdWRtdmphSGM2SmF5?= =?utf-8?B?a2EySmg1ejRGb3kzOEN4amQ0M3hoYndqTldqelMwLzhDb1hUcFhZRmcxM2FL?= =?utf-8?B?dzQrMGljdUV3VysyRi9vMFZQemZEUEVpNVhKTGpSbGRCb1FWNnUyT2dFdFlp?= =?utf-8?B?cTA5U1dSUWVrUjVqdGJvazUwSW1ZTDFXck5lYjNENUlENk4zdHpReXFtdVo5?= =?utf-8?B?V0NySkswaW9CM25CZVRMdGJGUkNEcWJGV2h1cktxVDRMN0hmSUEyOHpDOU5v?= =?utf-8?B?WVNqY0s4dGNlck5qNncyeHMzUEpBNEhtTzFrZzdTSUt2NDdDd0VHZ1g1bWg3?= =?utf-8?B?ckJTcmthWlBtS25rTis5N1dmRzBJNDlPUUJqQ3l4c0NvZExpa1YyMFBHRWYy?= =?utf-8?B?dThLWFhJQUdRS3FPMnlqVlllR3BrZzQrZnlFVU5tUFllUTVUdzFOc0NZV25T?= =?utf-8?B?NEVKM2pKaEtNVFdvZmZrbzFEa0hGN3RrZE5VOXBGRFFVV1duV3N1YnpId01W?= =?utf-8?B?bXE0b2NlNTFIcUlDcnhzSCtVM0hTaTluK3EyNy8yeldvQzNrejFYUHI2cDdP?= =?utf-8?B?UnFYMWdESjd1cDJGdDA5eThobGNBZWkycnNYdGRPUHhOYmpJaktsSVMxczVm?= =?utf-8?B?RXhuLytKaTI4MDNYTjZxdVJ3eU1jRHlBb1RUTmc0VVozZHdXM0NncmdzRk01?= =?utf-8?B?Q0J3TnR5Sm1UbDJRU1dJbXVrL0tRelc1WWZHQmJCV0t6YXpPQTZsRlZGMVFk?= =?utf-8?B?Y0hkN2tMSEdpT3pKNjlncVZuUWkxYmJPZitqNDQzMnpCbm12ZHJncmJCVG5H?= =?utf-8?B?NWtTNkpYRjMwenBkZWdreENOOFJJanZjNmJRdFdxQlZiV1RZdEF0T1VXK2xn?= =?utf-8?B?b3MzRUNhNkRueC9vR0NlVVIrNG5nK25BQkg0REsvUXF2UXVxSFZjNEpkalJW?= =?utf-8?B?a0NNRFhVaC81aUFHemlucjJOQkdlNG5YOVViUjc3elVmTS9VQW5JRWJwTWpT?= =?utf-8?B?WGF3S3JaVWpIV3BPUS9XNkFlQUJ1LzNoNmkrVW1Oa3QxVXdVS2Q0V09xWlZy?= =?utf-8?B?RlhUVzFvYlF3U2FGTW1lUU5qYjkyT0YwQkJldXcrNytua1g2YlhrKzlLTFJ3?= =?utf-8?B?ZXIvQklNbkN3cmFQUmhqWkkzZDhjdHFBRndUK2h4MHV4dTl0NVZDeVJlelht?= =?utf-8?B?TDZtNnJacXJYaEdkSW1nSkNSV0c5dDVkZHdnQWZDWFNZV0ZRUm9HNzM5RFJw?= =?utf-8?Q?d4BajFiCa4oiBtNmzt3XXFkeC2cRW/wmW1J8Y?= X-OriginatorOrg: efficios.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2188b002-fe06-40ad-291a-08de8369cbea X-MS-Exchange-CrossTenant-AuthSource: YT2PR01MB9175.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Mar 2026 14:39:15.0624 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4f278736-4ab6-415c-957e-1f55336bd31e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 3nO7jLiTKCYd2EvbGlU4YweQOyGDkB820zkrQHrfs7YDESdWecOyPY396iVRGna+QRbG2I/CfgVgtjcjJlzSMEXaooxRSfQVAFRgg2Q3RH8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: QB1PPF88FEBFFC0 On 2026-03-16 10:38, David Carlier wrote: > The compare_delta() helper takes (delta, accuracy_neg, accuracy_pos), > but every call site passes (delta, accuracy_pos, accuracy_neg) — the > last two arguments are consistently swapped. > > The documented invariant (include/linux/percpu_counter_tree.h) is: > > (precise_sum - under) <= approx_sum <= (precise_sum + over) > > Which means precise_sum is in [approx_sum - over, approx_sum + under]. > > For a positive delta (v - approx_sum >= 0), accuracy_pos must be > "under" (the maximum amount precise_sum can exceed approx_sum). > For a negative delta, accuracy_neg must be "over". Since under > over > always (batch_size * M vs (batch_size - 1) * M), swapping them causes > false definitive results: the functions return 1 ("v > counter") when > the correct answer is 0 (indeterminate). > > This affects all comparison functions: > - percpu_counter_tree_approximate_compare_value() > - percpu_counter_tree_approximate_compare() > - percpu_counter_tree_precise_compare_value() > - percpu_counter_tree_precise_compare() > > The precise variants are also affected because their approximate > fast-path can short-circuit with a wrong result, skipping the precise > sum computation. > > Fix by swapping the parameter order in compare_delta() itself, since > all call sites are consistently swapped. > > Signed-off-by: David Carlier Reviewed-by: Mathieu Desnoyers > --- > lib/percpu_counter_tree.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/percpu_counter_tree.c b/lib/percpu_counter_tree.c > index 5c8fc2dcdc16..beb1144e6450 100644 > --- a/lib/percpu_counter_tree.c > +++ b/lib/percpu_counter_tree.c > @@ -458,7 +458,7 @@ long percpu_counter_tree_precise_sum(struct percpu_counter_tree *counter) > EXPORT_SYMBOL_GPL(percpu_counter_tree_precise_sum); > > static > -int compare_delta(long delta, unsigned long accuracy_neg, unsigned long accuracy_pos) > +int compare_delta(long delta, unsigned long accuracy_pos, unsigned long accuracy_neg) > { > if (delta >= 0) { > if (delta <= accuracy_pos) -- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com