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 10BACC83038 for ; Wed, 2 Jul 2025 17:04:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 67AF08E0002; Wed, 2 Jul 2025 13:04:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 62BB48E0001; Wed, 2 Jul 2025 13:04:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 58FCC8E0002; Wed, 2 Jul 2025 13:04:00 -0400 (EDT) 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 4CFC88E0001 for ; Wed, 2 Jul 2025 13:04:00 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id ABC6558525 for ; Wed, 2 Jul 2025 17:03:59 +0000 (UTC) X-FDA: 83619946998.29.A965EA7 Received: from out-181.mta0.migadu.com (out-181.mta0.migadu.com [91.218.175.181]) by imf26.hostedemail.com (Postfix) with ESMTP id B30B914000E for ; Wed, 2 Jul 2025 17:03:57 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=aMGrLAFt; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf26.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.181 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751475838; a=rsa-sha256; cv=none; b=1gAUfLT7PaNlFedBe7fQ4i06hhqE2yA+FoWrYQSS1f3FiqIBOzB5IhCqdX1e1TavtdD1pn 3nCJ2Kyaw+PGdZc7c9ok0mQhU+zpza7V0ycrVSky184VcFrMH9aKaxD+5+RsM3GPRRIxYa EV4hyZtcpLqadpCjgCA7dkuUpYekP6Q= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=aMGrLAFt; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf26.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.181 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751475838; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=4uMdGRf1a4Lv2dz46lGK5SBnMPQts8Ar2rsdWDu30A8=; b=Lo7RkN2rTyNCrHIsjIsnJsqWC9I25Ef0gX94jNF98Kjl8ZLRcNWRNPpYkga5XEx1wY/6aL A554WCGjmNeSJpFup1HQAUjFXuOVu+8NaH9TAzrYFuoUe9NU3awjGuxxvamVOgLAO5Ge/5 jbTUjp7G7o3SmQ9Es2qN5mjaJM1IAj8= Date: Wed, 2 Jul 2025 10:03:50 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1751475835; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=4uMdGRf1a4Lv2dz46lGK5SBnMPQts8Ar2rsdWDu30A8=; b=aMGrLAFt6ceIRFGFSncF4/vJYWUGhG7ArJMoXr5qvUM2THgzz79pkNHVcUHELipMDLTUpO 7WzM/01L8XH3RiVvOjz0nD4ToyeYY8XKavZBxY0RQkc9w1iwuuDdGQ76fwzw54MGXQD8jx 9ucUwVBWtHfYgGoaJmYnuU2+x+VofZI= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Shakeel Butt To: Jeongjun Park Cc: dennis@kernel.org, tj@kernel.org, cl@gentwo.org, akpm@linux-foundation.org, vbabka@suse.cz, rientjes@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, syzbot+e5bd32b79413e86f389e@syzkaller.appspotmail.com Subject: Re: [PATCH] mm/percpu: prevent concurrency problem for pcpu_nr_populated read with spin lock Message-ID: References: <20250702082749.141616-1-aha310510@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250702082749.141616-1-aha310510@gmail.com> X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: B30B914000E X-Stat-Signature: rdgenrk9tt91k5dgx5y3qp3nr5yo4fec X-HE-Tag: 1751475837-806351 X-HE-Meta: U2FsdGVkX1/hP/QCJiHNIyIk35r8brhrGLtesbA7htuRWHyogKnFXdMXgK2UYZWyF548P/74KFEyr6Hi92N95OqoU2Rm+PaLXAwavMP6aLFeGDWrlhY2xO8pychOHw3n6oewSNWR34jKpuofk8CGg6f0vfk0Y6f/yyZstIZCBg5tYej0Sdsz+w8f5vWzChvVDbty+B5c1E5oeQ7zLeHZTZi1lmgF+mvfe9EkjjjoK4qyGfBBUvIYUQS8OQtlijxwDfS5WJRIc1C4z5GtASVsSgKxMrJhOoflI7hXNlQuz/gB3v3JlNx5fVOP+4MfCkFOx/zVaqEdWd//yjPLeWJfrv7tBLhL8uRRBqZgHAW4KblLkhQmQBxdRs5CrrdLif8yaBQ/YrZWcoYwDI9OncTHpTf/szyd5wxMFTkNJ3d0NPCinQrVkhm9wbtrGrOSNlXYCFU8/8g0a+EggPrA+1h/dOBX6wJKVb08d1BHIqj093yJzif60BExE3BG3mFLOQx69K8Yqz+e4sBFUu3Q8IDTlAG2jMsrkA1gIc5URUb70bf4Rj1hB7Cne7NOvJI/kwGvL+/bRVJIPjU79pVIu7Lu10IS8UUmjOtWDznNfUoBTeuGNZAb2n6U2ykEAU40hkzgsjIWFwvCzUGaDr6LVJqtuB/a1VHCjyOZcA9+7OoiqYaevx6vh5JbK68EwRpKBSehZDBbBqBlqst+HPmtYAhEm8WkiFCHb1cinzsQg6QIGbKe2swDa3u5g+V25payW/3yKYZ1ySWjvP7aIZLmGYFupyzl6eXxFm5qIm6bUH0+BJ2TvM0fmF8OyX6BIrBPZXOH7zrOLedrgJuubFDC1kA5S8/jkH52GCVBjNZwfGw/VVQeCCvewAnTaa88TEcGgrdBozUybdo8kx3plSLxSGYBSG14OrRxHyCuQEsh3XUAVipBJ6R7DivuTl+FFvT+IUaKLDG4PTXpskONU09Jwn9 BRhQGEAp j00sKz4ps2yVlHkirjdmKBEFGvnspK5PO6hIagr4i5oP+jm936sTzZXzzJVlAFFB7CB5PqvpfigNysnuF1OrdPworfTxLGF4anCxYuSigaEjRoES0TyNYgtKP2Jt6+3iibbdW1/BHWK34TMm3OcU0tWaqeA9sq7mVudcxYf7mtg+Ry7x5kjehBhslCmzHtI9zC1opb0jNGA0RnDyRBTJ9S6udJ4ltFoHZemZae83Hp+hljZILr17ZzqN07mE5nw2i+NIlZMKnRAxo8bFltj0AiENyz/Em1XbKZcDehRPDxeIZHGOJ/19/GwsrEDNOSYhCjDNkyDM4ryyxmjD6gkhzWPNAl78ee5z8VKuvPxIQZH6EeG3i8k83n022hH0DKU4HG3rsPc0/NAaaQH0xyg3qF4Nktc77OwAagGM+TN2HViKR2033Ej5qiu9H3gx1buwlm2oqj4jrugdpSLQFjC2Ssgrdh9TrvFQgbBL+ 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, Jul 02, 2025 at 05:27:49PM +0900, Jeongjun Park wrote: > Read/Write to pcpu_nr_populated should be performed while protected > by pcpu_lock. However, pcpu_nr_pages() reads pcpu_nr_populated without any > protection, which causes a data race between read/write. > > Therefore, when reading pcpu_nr_populated in pcpu_nr_pages(), it should be > modified to be protected by pcpu_lock. > > Reported-by: syzbot+e5bd32b79413e86f389e@syzkaller.appspotmail.com > Fixes: 7e8a6304d541 ("/proc/meminfo: add percpu populated pages count") > Signed-off-by: Jeongjun Park > --- > mm/percpu.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/mm/percpu.c b/mm/percpu.c > index b35494c8ede2..0f98b857fb36 100644 > --- a/mm/percpu.c > +++ b/mm/percpu.c > @@ -3355,7 +3355,13 @@ void __init setup_per_cpu_areas(void) > */ > unsigned long pcpu_nr_pages(void) > { > - return pcpu_nr_populated * pcpu_nr_units; No need for the lock as I think race is fine here. Use something like the following and add a comment. data_race(READ_ONCE(pcpu_nr_populated)) * pcpu_nr_units;