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 7DF49C83030 for ; Thu, 3 Jul 2025 06:09:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0F1316B00DB; Thu, 3 Jul 2025 02:09:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 079896B0106; Thu, 3 Jul 2025 02:09:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E5D506B0107; Thu, 3 Jul 2025 02:09:34 -0400 (EDT) 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 D331E6B00DB for ; Thu, 3 Jul 2025 02:09:34 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id A3A84BAB0B for ; Thu, 3 Jul 2025 06:09:34 +0000 (UTC) X-FDA: 83621926668.27.D8D9ACE Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by imf24.hostedemail.com (Postfix) with ESMTP id CCC86180002 for ; Thu, 3 Jul 2025 06:09:32 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="NWE/+eF6"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf24.hostedemail.com: domain of aha310510@gmail.com designates 209.85.214.172 as permitted sender) smtp.mailfrom=aha310510@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751522972; a=rsa-sha256; cv=none; b=P1P54EXsJ+ZGPSj9HQLe8ST4tNWUBt/dVEClkzCVjZE1flRaMrztxdnZTm2GEegSQJ+M8i JmNQk3cZLrtJp1OHhhvWYHEtl44K7o7JtAUkF4n8bCi5lHktxq5i3qwrWhH24hhNqgSpia GOckyJPeRTJbxsL5SD1zCRXF8iaPMK0= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="NWE/+eF6"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf24.hostedemail.com: domain of aha310510@gmail.com designates 209.85.214.172 as permitted sender) smtp.mailfrom=aha310510@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751522972; 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=zuuZADxXuyOUxUlWSv3SmGbccP/kTl0lSgA2T0+Pw48=; b=nTW0JoUop+aF8Km8QeYMYGOnZGCiZrMQ//y+XBv9bUoqI7ffapsZU0CJoy3wNqh2bUETtw KR4gU0UQpvBIVMdfOTQlAF5BcRLmW/2Hv1VlRKGBah2/CEzmLX73kKRE8I3nbpws2KBZpF LktkZHqP7q+on7SE6ixRGn9rNTZXOTc= Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-23aeac7d77aso48381495ad.3 for ; Wed, 02 Jul 2025 23:09:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751522971; x=1752127771; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=zuuZADxXuyOUxUlWSv3SmGbccP/kTl0lSgA2T0+Pw48=; b=NWE/+eF6JEe8B3kPVYis11QokqqZGNILLNNgnGI6RlEta2w6ujIWXgBWaL6F+8GzVi VKaf/jW57Uk/+RIkkRyTOSIIqYCgPnZW198Vx8kenpDs+btAONeH5KvBwa1Wg54kgj9u +W56c8wo6TZsrHtHxHQocVsmrMoICr68r8Qd1PmO4wcullk04buaHZOhqPwWLArhS07z hMQ67eMPAW6FO1T6pf8KtP/YF9drSnNcf1XKr8OGulGNaMHNPiGtiqEbiTAJYv985/zZ qenKuqiEA3ZU+YlO47O0VHG/UChqn7oAvnjSBMfAYoGcxImBp6GH195SQkNw8DNSjMiE 45Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751522971; x=1752127771; h=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=zuuZADxXuyOUxUlWSv3SmGbccP/kTl0lSgA2T0+Pw48=; b=jQ9TRaVK8oxDPJA2DRf6XqzxTUGm3SgFOulU953dj1V0s4cKZh/8RwZR05OQ6kLeOj qHvWiyxv2yMR5/t2MJ0Cp/0bCS4bXlsyjlXutQf2HrwynncIbl3on95XUsnBUchgBbO4 IIuW7GiA4jlHLcCHqZ4JhpjG+dhsPmxJheMYCMEzqUB/Bi1Sitl/i4xeF6nRNeN/Ve/C pkfZxAqQ7phar4PW4TRk2H1AcF60sxM695Vx50IUxrZupojsVk0qHA9PahqV7k4D2Ly8 r9thzVJQhZiWxcgZ1S5ATanzjsm1Hklkshfs+GT8DW0nrXkzWsn8L3Ok0I9oRTp61UIg +t1w== X-Forwarded-Encrypted: i=1; AJvYcCUkXAtOKmexa1IT1XINl28P+zeBN7wH2MnxXorbDfuU12CwmkvLCdwT7eUhiGJAPCl2AM0BXDYLhQ==@kvack.org X-Gm-Message-State: AOJu0Ywd2ap7TpWxMK7TJt05i6rEVqLhC3ZqBqpParuAqvpo3pQXETYu O/63gzPqNmbbmxRhqv/4HTzPRvP7GaQBxXgfg1hkPzppL0p+1Ix8o5n/Z6iaNntOyAepV85dED4 Wf/6W4r0u64xc9H1IrbmjlN/C+q8RAKA= X-Gm-Gg: ASbGncv91p3jcCS0F2bfmyYnj24IKNKMjQnpES3CODCueljjuukrPTIiF2JedWTGvKJ F3C/qSaHey9sO2Nu0MpN4vZlIjWEDMLsQLgNdLHznMthiD3kDAaaEqlpJH733o5cf8/ATxaftdi G2o2gqq+0QQRz5C+499JRwGG7j2dDyIOCCo/H5xUd7pZ8= X-Google-Smtp-Source: AGHT+IFdl3iRPzC7io67vAWkuxbZGAjAeotegr/GTnPvHCevmw+ZMUKzoFm2ry4bWDIj4n9zdG9D0vPBAWoO6bqqNps= X-Received: by 2002:a17:90a:e7d1:b0:313:bdbf:36c0 with SMTP id 98e67ed59e1d1-31a9dc97f5bmr2941518a91.0.1751522971452; Wed, 02 Jul 2025 23:09:31 -0700 (PDT) MIME-Version: 1.0 References: <20250702082749.141616-1-aha310510@gmail.com> <7b7d353f-f38b-3205-8fd4-1072dbf69cb6@gentwo.org> In-Reply-To: From: Jeongjun Park Date: Thu, 3 Jul 2025 15:09:20 +0900 X-Gm-Features: Ac12FXx880e4AsSL41ULv1Xim55w3pwBvzjTZak8X2qGavfUgyTsdCqFhCh29HE Message-ID: Subject: Re: [PATCH] mm/percpu: prevent concurrency problem for pcpu_nr_populated read with spin lock To: Dennis Zhou Cc: "Christoph Lameter (Ampere)" , tj@kernel.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 Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: mxyzp75eq3yeoecy9kxmgfy18gc8kdu5 X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: CCC86180002 X-Rspam-User: X-HE-Tag: 1751522972-218099 X-HE-Meta: U2FsdGVkX1883FQcme3duzNAcKgTES7uJsRTjNcKoS/8I4CLCeHnxd8EIx4v8Zil7z3F87v3s87SWYHTVhNbzMhLErBpRHsZW4FIYAkfWE887uIYSnZySFRTz44sdXAwzevKaUWiTAbw6enE9VKtoCE8zLMICLT0IQbV+h7rz0lNtzWw7fyHEtJ7uwKGqjTpN6RbzNYn5pEaduf7jmxi3lZoaTdrZCyPLoHks3xnQPRIaNLTVfDFdYXI4bNjZSq5HffF5fEzfH6naEv2rnVldL66sdnNeVxgbjG6C3g0T7sZVU041oM5umjYFku4YrglT+cSCUIauKBgPV01oMNf80Z05zuPelSCxlMIDiSUJ9GLQpWjG99XS5MQLwPf2Kd6bYgalVjJICbFpo1J1+1v3sOfXaWWL/c9xh5q3h9AjRZWQqx9R9CrJjQHtq3dIAf0O5yRm5AqiP0LnqIjX6MPybvJZpEZ4F9CobZQK4oRICy/6zshkpH65XslVVUM3L6shjpaxroZvbbvq2WDhQ0L3BVoGa54JH77K+ycauXXDcN3Cf75V9gM0/HS0rCexu0Zr14YTL6cyux5wAqx9pK+SUWcryuzfNUvkKgSEpsoR0L1JTiFoKZIdRCOvpNwgxGyIz0T2rRUZTaZbu2fOo7hzzOUX03W2bJ8jEEu6Uh4+zNIW3OYP6PNkT0iyOp0tLPCd6o3f6qlzPQcyA/CBuyQQVzz91LIv/enJ1k4ENX0gWrM5Be9U8SvD+hVn/WeWpNTSR+Fi0PzorIrsXj/8XaE/qxG94vbzHfTaVYeZHXZ/1qx2ozNBWwqKbHb75nsYgRNZ5gyzhChJQwo45SxrWo5v+sknc6zhGeKOF9jBLuEoOketvS24piZpER9DfEwhOkBqm3yaWf80oOA7TO78hK/5SG/TObcF0fMCIrSGooNpJule/cgYbffcU954O1MiI1MVhJSkt25zd54TfrCCDc /KmRvCaZ 0aw7IfesRSUQ/g8L3zdzZvZzc9b6X7NfO84B1qtPwScaV7j4Xs0T/XJBumHTfQPEsgXU15Ocj8EzFqsAF9INxEbLU91EKFyqHQoqKPjv76FeYKyNcse/9/60pvn113KS8N5ArW9Xe5Gl/zzCpv07L0ut+qHnje4iVtqMZhkdcobeFTrwP3XIRiODnbGgI5a+s4L50rQP+r4i6PLnTRQYr116JgjbcMuV1vhhxEnEt77aKxZYoAxr1IQQXdRdlUheXUEdWfY2X9WvEZgSxX2HLJcKr4JrY1aGPp7rieF3ujyYVx2K1VU08BwffBVqXQfB+ExwsjHoLEiDGfojpT2qmFXOxrOvtEDK3oFpIUqhnOl3Mw7sH2uut8AZXWsz04X+cszm7HwgHYf9XnKyTzS3EnEVkMOtEpXGAw/Y8UcAyY8n0bEJee3+bEpGLkytRzan/JATDw7OMEtzKOdJitnGM4IMJEOFqLLY9keDrMeICXcqGuac4cSWHdDcA6p5P5NflJrJp/mp7WrgHfJmJVJy//KpDlWcY/brvebvus0jvcbRKXyj/5N48qdb0+1d6nbtsMkUX5xeU3/SGYHn0GlEJmZk89mm5QYIOPB3ppsXSGOLnEy+3cQtjqr4IzYQomzo6uh6Fl5Tx6dYpmqiUi9yb6Wb9t9gDV9ohJ41sKcxPGkyHBVw= 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: Hello, Dennis Zhou wrote: > > Hello, > > On Thu, Jul 03, 2025 at 01:45:36PM +0900, Jeongjun Park wrote: > > Christoph Lameter (Ampere) wrote: > > > > > > On Wed, 2 Jul 2025, Jeongjun Park wrote: > > > > > > > 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; > > > > + unsigned long flags, ret; > > > > + > > > > + spin_lock_irqsave(&pcpu_lock, flags); > > > > + ret = pcpu_nr_populated * pcpu_nr_units; > > > > + spin_unlock_irqrestore(&pcpu_lock, flags); > > > > > > > > > Ummm.. What? You are protecting a single read with a spinlock? There needs > > > to be some updating of data somewhere for this to make sense. > > > > > > > > > Unless a different critical section protected by the lock sets the value > > > intermittendly to something you are not allowed to see before a final > > > store of a valid value. But that would be unusual. > > > > > > This is an academic exercise or did you really see a problem? > > > > > > What is racing? > > > > > > > > > > This patch is by no means an academic exercise. > > > > As written in the reported tag, This race has actually been reported > > in syzbot [1]. > > > > [1]: https://syzkaller.appspot.com/bug?extid=e5bd32b79413e86f389e > > > > A report by syzbot doesn't mean it is a real problem. A production > problem or broken test case is much more urgent. > > > pcpu_nr_populated is currently being write in pcpu_chunk_populated() > > and pcpu_chunk_depopulated(), and since this two functions perform > > pcpu_nr_populated write under the protection of pcpu_lock, there is no > > race for write/write. > > > > However, since pcpu_nr_pages(), which performs a read operation on > > pcpu_nr_populated, is not protected by pcpu_lock, races between read/write > > can easily occur. > > > > Therefore, I think it is appropriate to protect it through pcpu_lock > > according to the comment written in the definition of pcpu_nr_populated. > > > > You're right that this is a race condition, but this was an intention > choice done because the value read here is only being used to pass > information to userspace for /proc/meminfo. As Christoph mentioned, the > caller of pcpu_nr_pages() will never see an invalid value nor does it > really matter either. > > The pcpu_lock is core to the percpu allocator and isn't something we > would want to blindly expose either. > > The appropriate solution here is what Shakeel proposed to just mark the > access as a data_race(). > > Thanks, > Dennis If this data race was intentional, it makes sense why it was written this way. I'll send v2 patch with the fix Shakeel proposed. -- Regards, Jeongjun Park