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 DD24DC54FB3 for ; Mon, 26 May 2025 18:07:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 700126B007B; Mon, 26 May 2025 14:07:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6D80B6B0083; Mon, 26 May 2025 14:07:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5ED9C6B0085; Mon, 26 May 2025 14:07:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 3D14A6B007B for ; Mon, 26 May 2025 14:07:13 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id D574014026F for ; Mon, 26 May 2025 18:07:12 +0000 (UTC) X-FDA: 83485840704.20.C07AA2A Received: from mail-qk1-f170.google.com (mail-qk1-f170.google.com [209.85.222.170]) by imf09.hostedemail.com (Postfix) with ESMTP id 0EDE814000C for ; Mon, 26 May 2025 18:07:10 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=S3S1JVZh; spf=pass (imf09.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.222.170 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748282831; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=UGlhHkaLlmCOz6H4uOoPZnktDHjjHar4VtVI4OHZ6Ow=; b=12X0jAfpqWTRLRK7wkyux8bPKTq5sL9uS/B03sqPl9mGyGY40YsAtFfqp+RfqPD7R7DKmS DwAafKs68lQekXux60zPpi+4QivtYZ4++y8VT8M9SN1fecRatfHB5J85PHCtczvPJZ3rvK JY3GuQaIWamuzmiRjQfoag9i0GoaERI= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=S3S1JVZh; spf=pass (imf09.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.222.170 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748282831; a=rsa-sha256; cv=none; b=QO97d01KjvgklvrDH4FH/DOgBtmTybnpnsgSDXmrerCzGAn+1OZZCg17xxXW+QGj3+7h2G Qrnv/gaUK/BwQwXjXJjcVRzTp5EYJcqdQpGzbNwfni3GhAVl1NxAsZh66JlZ4mMrIlyYMg RJ8i3AV93+OPp+VgSPn1Gl8auMHRMN8= Received: by mail-qk1-f170.google.com with SMTP id af79cd13be357-7c5ba363f1aso332412685a.0 for ; Mon, 26 May 2025 11:07:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748282829; x=1748887629; darn=kvack.org; h=content-transfer-encoding:mime-version:reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=UGlhHkaLlmCOz6H4uOoPZnktDHjjHar4VtVI4OHZ6Ow=; b=S3S1JVZhs6cFGfqdAeH3ewk4D6XNfzs04HPXEbMLjvIr7MJtnYeL3qrXsZWeMnpvDH bj24RMeWMPj2UjdjhKRhK4U6OqgbPaQk3/eRgue454+KlI8oRhJl7cjQ/OBCXH4Uj9AK c1WOJVr0OGKJSd54avrDgtMYZdan+gGnZAQc3ZWXQ11vo/lBcoVzcvwXGYOD/rQGqndw zU9JUwgEmmOuJW7IY69hvBCcWXuU9b4qAzw3RDWL+2vS19ZYh9pYv5qdjbFmqnss/brL J5Q9OsBWG2utjgtuNbMxVHyqO7s2bM7H7eO1h0nNE3oCZFb1l/Q9+VkKZeYVKRvQcIEQ VQXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748282829; x=1748887629; h=content-transfer-encoding:mime-version:reply-to:message-id:date :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=UGlhHkaLlmCOz6H4uOoPZnktDHjjHar4VtVI4OHZ6Ow=; b=bkbWmULRknrVkoUi+n/KNDm59H9gCtJibEcHo4smKgmIsvZ4N86Dq1IOp2oF94w5d6 NdZNuRMV1dft1RM03E7MQHCIhEF6Ks8oC4OosT011MGevAuTnbHJD/znGefJa62uaKab 4Hyu0nP/OPCy3UNHPS6C03RWFwGKy95aHngFaP+8j0QkIt9X+jgdDeAOxOFYHZQD+0R1 VEtys90tVabdmqSWBkd3lU+J7ytICfLbXZ2SGYiUACOo6Xuuhw3Z93cGScPfO4m6D40w WvrrGMwyHT5H1c6gKNUxG+t4H1ErNrPCndM6KStKYQ2yWOYE+UvlJSmLT5gPueX+Ypp/ 4mPA== X-Gm-Message-State: AOJu0Yzbrn8aRXUKjWjU2njH/ztsabL4p7xSD29LeQ9yzxjApFItkvHD D3xdO2VDBV/7EZxVyc9bKvb+qBfx5jVIas6oi28JxkxRwdH8Q5rdj0F+sXIT/dpvq5A= X-Gm-Gg: ASbGnctc4W3n0RYnjyjo97vgm2EGb4xuDA2EL2LpaTkaivFp6rKsULvOLEzwGaH+Dgp gjTzFphWPIyR8YfamddKDxcTeGn20cni0SFT0zsq2pcNuCP1ZwqnhudW+00W1Umlvmmgvq/6UtP 9gecei2eZqslJl8bC/oG1TvGXuKrLh7jrJmTOTy5bQKDNai1Lu+MUVYNLjXxwkv8KWgqCTdsaHj MivyJhU0ElRntBikKNQt+IW/3HBcfyu9nHcM9orCBDpRydBbZrt7tqh8LoYDilgP59mqP52sLpe mXN5CN/BuVrHQGn4PbNW73AU0HHArBtmPL9VIBsN7BtJc5YEPNe+0C3/l8CckzsllVvZbsYX X-Google-Smtp-Source: AGHT+IGw9wmiHNzzQ7rI5YNNhMNsw3L9nwdykV2WWCjhxVWJvwblCp2eZ+9qN0+E+VlRTEsv1iGg9Q== X-Received: by 2002:a05:620a:1a07:b0:7ca:f3e2:92b0 with SMTP id af79cd13be357-7ceecbbff2dmr1383462685a.3.1748282818592; Mon, 26 May 2025 11:06:58 -0700 (PDT) Received: from KASONG-MC4.tencent.com ([101.32.222.185]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7cd467f0c43sm1587627385a.54.2025.05.26.11.06.54 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 26 May 2025 11:06:57 -0700 (PDT) From: Kairui Song To: linux-mm@kvack.org Cc: Andrew Morton , Johannes Weiner , Roman Gushchin , Chengming Zhou , Qi Zheng , Muchun Song , linux-kernel@vger.kernel.org, Kairui Song , kernel test robot , Julia Lawall Subject: [PATCH] mm, list_lru: refactor the locking code Date: Tue, 27 May 2025 02:06:38 +0800 Message-ID: <20250526180638.14609-1-ryncsn@gmail.com> X-Mailer: git-send-email 2.49.0 Reply-To: Kairui Song MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Queue-Id: 0EDE814000C X-Rspamd-Server: rspam09 X-Stat-Signature: 47r975mpp7s3wwf1hyrzhdbuzfhax5ba X-HE-Tag: 1748282830-680267 X-HE-Meta: U2FsdGVkX1+MqODGi+D2v2wYY9yZZOaN5ZkFlVV3FcwCj3k0vw1Jbz3jA4unmp1CsIjyiNGimaizyqvmzjfxj97DuJID5CgieIGDKaHT1CETG5vZHV0VIkFGfJ1F9FMn45bmNxGzAnblQlMtLMh8uEGUbXkaBp9uc8pCXAD1aWUsvb4ZguJXHx9ci9sAHc01Ec388Wkz+ozCBVq3RzSOhH3jQSINqerD+69G8ZXHt42PErKszz6dLRjjQ4OO1RgVU8AeH2ahgC2nkD8Xxw25PnQxmCCWhlrVMstam5Cf/jWua1enn5EpxKUfBrRyWKOXvChPfV0O5NHBDt0dtpAfP/Si3kJLsbitoXuKHEEkd9JhIIHadx1S55Oh1bh7JcTSXf6plBvnaAvRDCQmcGmdY8xVu0ruQYUTr1IBm8yJRkjgVIpveXTupOnlpaliKY9p6XUx1ByG+zhhie0UqxWL/mJxsfeUQAGz+OpVsoUULmJ6LHsiIBxnTHs3SyEJrrKHoVDqiT8UhvctPchH2e67YpjeDtT3/hPt+lcCFwW6R5GNljXQHZjcxtG/p9Yttuiqy3i1aAgyF6FXcYZ+h1t15OhtL+pecoybuZxC65zo3iV0aZBuRzQ+7KVsdhnce3cIbMpLQPG417ZQA9uJ354MHydQPzg7md0F13vZ3AIyzaw9Rk2UOpt7SBafCcGVrBc9RARSCwHKfOIW2vfbaEqfMZzTJBQ4gaAfU1/A5QRg6ss72d4cgbGSUP2N+zDaZoYhW+tSKSRubQh2fXVv6sxptcn30MAKJ3fjgTet+QOqNDhMrjafVuhX+qXbUAQ22CEZM7b3XSV+CZDF3yn+FHBmdNF2CasJhXhbz8z9iiOsOey0BAuw1qvXKXqtdinLazPVQtIkyfgEc+/boRPur3iKlGGS0ziJQM8MN7M7j7JklUpn/dATZ+VJZT4qRgExG0giNPa2qJrYx4aRava1osd ZlGPGmVU g9ztzcOQqYCzk3s4WVfOA81lGqWNJe0P4vIwI7dM90KRLqDLrfRaaNtgOQRrgPhjKu5NuEIFWTdVWjSYvHUo7ypXR+vxXu/EZqdVgaqYSlWxTdczIXkbULPRYqVMuSru/62wcOkAKmcLyM5LCy86DYc733I1COd028NxWNA2Mz5Rhze4PZTMKLpRNhCdWhkhd/P6peiHjFy5GF2W0hqIrmDyIM26RMmOeVdgn2jsDq/uXW7+hnrt7FcYbWA+PqWPsQVZnn88EMSIIh/ugDjHrrazByqmQCx4ZWF0/NzpC5Oan6qkvTvEisCrcwQ/6pl9KCCj6hPxh/CEGJ3qiSyQNElyYvFlPoAIEgo1W7KILFpVbRjzAJB6fza2e+EyaIUvIrMP4Wi7Q9KtsvGparL7Fy7A0cZ9RwYvUr3/aP94HogmGlJl5uhcdqwxSLYYMTyXqSOT8AvmS/4bjX+M7Jf2ot7Ynf1XnnqNXR7R35oeLOzWFN2QIHzis78+JBUQ23NMop6+8/Z0pRPsYIDC54IyKtuVG1fRErZ7fnjSkKycuoAj29MtE9JGOoBgdPfb+KOXYXqqyruOaWQEzjbQgo6md15u9fxM6QBqO/eEMFoCe8scAd47kL6y/bK9O9EBCCrmbRcmUm5izZIoF7iaZqh9a3XOIDiO+wjFHDoF2 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: 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 -- 2.49.0