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 699EFC5AE59 for ; Tue, 27 May 2025 02:17:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9D4936B007B; Mon, 26 May 2025 22:17:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 985A86B0083; Mon, 26 May 2025 22:17:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 89BC06B0085; Mon, 26 May 2025 22:17:05 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 6A1886B007B for ; Mon, 26 May 2025 22:17:05 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 081EC141676 for ; Tue, 27 May 2025 02:17:05 +0000 (UTC) X-FDA: 83487075210.01.2FCC9B2 Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) by imf13.hostedemail.com (Postfix) with ESMTP id 4796A20002 for ; Tue, 27 May 2025 02:17:02 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=Yv70is55; spf=pass (imf13.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.215.172 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748312223; 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=ACVoLlaU3ur0JkZbezUkrwCZbhnGFLL9/FLncuMO858=; b=qjsIddydQqQsX86aVBdrvowWq5/YU2sABCAhqVSWVbhPaNuQ4CavB8UpgROoFPHhhgOFB4 bn+rOXTCWpB+nJHgJNZtdMFbC+uvz9j602+K8LCSaPvhIZ4uDWCHJyMbpnmWvSlQu7jQkB UCgaOnvzqweHwqBHJbpfJeDKurqWB9g= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=Yv70is55; spf=pass (imf13.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.215.172 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748312223; a=rsa-sha256; cv=none; b=xEhuw5/CXrVg35WSsJUbdCUxAvHIzvaoUwsiYPKh7GENOUudVoZKpMobrG19Mv3aEmW8Vz +ci+LW6RUuWl9pmzPtjWTToOGE4JSJsrpHDM6uQs4KisQCXbhO7UdodGKh/o/ZkPbAjDGr Kc9ur/cEBrzEeQxgHEksusr8k5oZeVM= Received: by mail-pg1-f172.google.com with SMTP id 41be03b00d2f7-b26c5fd40a9so2611526a12.1 for ; Mon, 26 May 2025 19:17:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1748312221; x=1748917021; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=ACVoLlaU3ur0JkZbezUkrwCZbhnGFLL9/FLncuMO858=; b=Yv70is55aq1RhSAnCmVp69Cj67Pd1t3ociEtXSaOQMS4cAYnk9TVO8PLEleGzlC+j5 L3AiMV0uicx+ta3l1PYYJS0KxGktnstZppTdkWfHEjcDxsatmp/sBLx8J6z7whKhaJcM Y+nVBWhXXpnGzrq6DdHuY+EiNBT7Ns2OmIHSKOn7vJwwdUsUQtN4lpcmXeA1NM4Drl6z TZEhOELmmFa12vP2sOOTaica259/6hrlnKk2FwHChP1bJ2wRxRelTherfq2AsFP13yav o9NjZ6dVbWvaG3xIKABxf/Y0jPwGmRJhkWYD5+VDlJsHl4iXzzWXOMBFiHDotobbHKtH IrHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748312221; x=1748917021; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ACVoLlaU3ur0JkZbezUkrwCZbhnGFLL9/FLncuMO858=; b=XyCfPcjsCwHZfd7VUUUPoq6pqF5RM5JvTLSovhYPL1GQTtnDtlH6GAqTUxFDTVN2/i rEk4cMy6W63vRGef4CMr8dQzozUa1XBcJuQLYK6KpbGQ0epgvLSpxc+JTOy4s9YDSUYP EgmasptVIt3EObTx/lrCMjnASVpIxiLJ9fI4qGDUDLsIzH8n80tWU62J33wAo92cgjfY ehK+9L5F+lthO4UVKPlQGuMRsqwkWpw3qTHkQnNmUCsFD7LybbHPFNEbJ3xJY2tPcbka Q7cgE9W/2S55YY0isoGAx4utwN0fyXr68juvKJ7BsurqQhu8J4x4R8fRfJLqrRbhRO6e vtyA== X-Forwarded-Encrypted: i=1; AJvYcCWm57bCxR/qrNr804c2KI4huhYzNd6JPbH6ImkqvgTYJOBS6mqLgRQ196YjaH3H929ly8klENDQcQ==@kvack.org X-Gm-Message-State: AOJu0YzkaDjX7AV+UXbFp+6zujV3HVyvE8Wgk50X1bbLepMC1jQ8JW0Q 8+CTKZLS9WnduZWyxtDEun3Er0r1xULTTTtyrtA+ki9XqvaUU8OusGaXG86y/BH4lvB44t7Xzfr qJy1S X-Gm-Gg: ASbGncvWH59CnNyEmJ99yAKswrla0uZLIe8yRBJZw3QoT0OBMm4LGK5RtywY7KEvvaD hihCs+LEqqC2Nu1HZg4/bglfkWWD9lwOfiBKeCG/xy/LbPQaL+yxhsveXvsQ4dpsh06dtwTwVKk HwA+EbAxYS1sknl1R1r565hvhswRDxILPFb8fpdzQef6dliJ3GXN9Gi8TXuOuURUTzp68jma6tM 2/LRhR7+MpNYYW5PuhFD1o1USLXS6sSgMs6sflGGA4iOVVGItoDT8O3tF0HbztUh8LBrzJoR5Hf cbLmmaEFqIS1rxJ1H8ak7yuqs5ZLeJ5mJ9vKvpoD3tba0tRgH/02ybcBLQC9qNH+CYRAxRyeJ6e 1h+Cuya85Pg== X-Google-Smtp-Source: AGHT+IHWBMMotqfr4nsNp8lecmYtympKIxi+YGDbxrUsOSHbOUbLc2e8psMU4hZPvStlhj++SdmhTg== X-Received: by 2002:a17:90b:3851:b0:311:9cdf:a8a4 with SMTP id 98e67ed59e1d1-3119cdfabb5mr3964084a91.8.1748312220844; Mon, 26 May 2025 19:17:00 -0700 (PDT) Received: from [10.68.122.90] ([63.216.146.178]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3111934af89sm5187730a91.28.2025.05.26.19.16.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 26 May 2025 19:17:00 -0700 (PDT) Message-ID: <1c734a50-1ada-40a1-833d-4b94b9849c96@bytedance.com> Date: Tue, 27 May 2025 10:16:54 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] mm, list_lru: refactor the locking code To: Kairui Song Cc: Andrew Morton , Johannes Weiner , Roman Gushchin , Chengming Zhou , Muchun Song , linux-kernel@vger.kernel.org, kernel test robot , Julia Lawall , linux-mm@kvack.org References: <20250526180638.14609-1-ryncsn@gmail.com> From: Qi Zheng In-Reply-To: <20250526180638.14609-1-ryncsn@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 4796A20002 X-Stat-Signature: 4zgjbsii6f4yspraywz93fqgx3eg63rk X-Rspam-User: X-HE-Tag: 1748312222-859373 X-HE-Meta: U2FsdGVkX18L7r1ya2RbhDiz+WokSJhMkWioWq6M+JoYYyhHmkwSP/5CFhx75PNZ/HEFnmwADoZMrKpGpvrt0c/HOmtd4j27dLRu9CC2YriMBmaDx1yB0yHo05/Us5EFi4C9waCKVoVPA3Q/568UO3uRfsvOMQ7SDi/RXp3ckeeWW3JmA2ZKtsOoeEmihd5txOOv9nJhhhoiwy/6Ygv/6/yOUTkjG9XoUvsw4QSsqpF0ZUw8sqqrqa7QaHK8HIi0P7PuRYSzZJDJgFJ6LHgysN/JRmUgMn9q1jrTFzTKobvwpwHsFIN0bguyf/GTJxJCVhPW+jJmaeL48wFcZlJkeq56TEyEo7qwJkZgg52spo1WEkj8meMFwE6DDs40/BZhfLfSq6YUT87M437g4Q8a/DLZt7fT0AxJ6XCKICaPqq3h+O/jmkZl/KNf37WdYS7getuqDrrpW2kYmXwMm8DM0vXsplphbW7KhxiL7Hb/63n7kpNHWvU2uZN/GVN7U4LmYbX8+DZwBLT7AsOIcVJDgKCnjgcKZszj9IqdYl8uvqvI6dAoh2Wth4M7uIcGCV6NDkWRG3dALmmz5qspSSzL9t8qlW7IlI+HJ4RDDahZX9IPLvRgraki8uWtLDRFtWUAUDLid8ADRGSSftSErwjribTH4ru8byQ678feAI7kUNZ2sZ51dX8YB3n3ZtQy6EfUki6xtg2GPN3DWSjuqFwkYDZ9RktpXRmX4GrwBzQn+w0H19vnoFk04SiD0JY/QFvanW5XuCmFwLhOgwRyhqtBMLDTEhZuX7yypfRmrkZBKqbFUY+mol3vhPbWKnvOfECb4S9PGrOHXEV3nA61qka2lBd/7cPmvVecT9CHenbkE1pIx0XQG19J/jSXl8BatImmDY1yxoW2wkXy5KiGKZSxAI8nHUeFYlt/KnH+Mj0MmnA8NJ79NkMCo2ieTLt2CgF7REGeHfdspxKIAUNomWP jGraYX2+ bO3vtQLkLp8exskMmzWO1ybrfiyP4dEajSsj5OcGEBKTvmJKpXsGeqVTGmIgr0ay5+dQaYtUbW6MQmwYVxTLNocLhbwzS3ECwNktdlyXWy6Ejy8h1xGIRqZ40l9c0m3BIXQ0Xhe61nrPjlhgTf1g7koq1fcQIDOxYQ83d0fEzsohBJAIK8Jrq0CeAUvyfrbrn8dzMTCrFBRrfjGX1NHBclEa8OSNLOpEzV/xasDgqXpRvA3m8sBEOEz9sciqHKpNL/eSzd+mVNg/5mmtxm+U5WkAlf5/VcrGAGTg+GV6B+HW25jWT0YzwElnibn2wBMos3Tia/xNFsojxgxw/iOct39Za29Gkwf3vS3BUpOr2M16UP7z4ZuS+PSG24IXS8hKDx4Bofhcm173n+CIVBAMPl8QuZsR3RZRmkk/JxLIj7Hflk/f9OLDi7Ep34AmmQM2TRyukCPMcGmePlw8EGYL2fAAmyxPhZP2aXSPB 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 5/27/25 2:06 AM, Kairui Song wrote: > From: Kairui Song > > Cocci is confused by the try lock then release RCU and return logic > here. So separate the try lock part out into a standalone helper. The > code is easier to follow too. > > No feature change, fixes: > > cocci warnings: (new ones prefixed by >>) >>> mm/list_lru.c:82:3-9: preceding lock on line 77 >>> mm/list_lru.c:82:3-9: preceding lock on line 77 > mm/list_lru.c:82:3-9: preceding lock on line 75 > mm/list_lru.c:82:3-9: preceding lock on line 75 > > Reported-by: kernel test robot > Reported-by: Julia Lawall > Closes: https://lore.kernel.org/r/202505252043.pbT1tBHJ-lkp@intel.com/ > Signed-off-by: Kairui Song > --- > mm/list_lru.c | 34 +++++++++++++++++++--------------- > 1 file changed, 19 insertions(+), 15 deletions(-) > > diff --git a/mm/list_lru.c b/mm/list_lru.c > index 490473af3122..ec48b5dadf51 100644 > --- a/mm/list_lru.c > +++ b/mm/list_lru.c > @@ -60,30 +60,34 @@ list_lru_from_memcg_idx(struct list_lru *lru, int nid, int idx) > return &lru->node[nid].lru; > } > > +static inline bool lock_list_lru(struct list_lru_one *l, bool irq) > +{ > + if (irq) > + spin_lock_irq(&l->lock); > + else > + spin_lock(&l->lock); > + if (unlikely(READ_ONCE(l->nr_items) == LONG_MIN)) { > + if (irq) > + spin_unlock_irq(&l->lock); > + else > + spin_unlock(&l->lock); > + return false; > + } > + return true; > +} > + > static inline struct list_lru_one * > lock_list_lru_of_memcg(struct list_lru *lru, int nid, struct mem_cgroup *memcg, > bool irq, bool skip_empty) > { > struct list_lru_one *l; > - long nr_items; > > rcu_read_lock(); > again: > l = list_lru_from_memcg_idx(lru, nid, memcg_kmem_id(memcg)); > - if (likely(l)) { > - if (irq) > - spin_lock_irq(&l->lock); > - else > - spin_lock(&l->lock); > - nr_items = READ_ONCE(l->nr_items); > - if (likely(nr_items != LONG_MIN)) { > - rcu_read_unlock(); > - return l; > - } > - if (irq) > - spin_unlock_irq(&l->lock); > - else > - spin_unlock(&l->lock); > + if (likely(l) && lock_list_lru(l, irq)) { > + rcu_read_unlock(); > + return l; > } > /* > * Caller may simply bail out if raced with reparenting or And the code readability has also been improved. Reviewed-by: Qi Zheng Thanks!