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 52D02C021BE for ; Thu, 27 Feb 2025 08:03:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9741D6B0082; Thu, 27 Feb 2025 03:03:26 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 923B96B0085; Thu, 27 Feb 2025 03:03:26 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7EA1F6B0088; Thu, 27 Feb 2025 03:03:26 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 61F136B0082 for ; Thu, 27 Feb 2025 03:03:26 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 13F761C8628 for ; Thu, 27 Feb 2025 08:03:26 +0000 (UTC) X-FDA: 83164984812.17.788B735 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) by imf27.hostedemail.com (Postfix) with ESMTP id 3301B40005 for ; Thu, 27 Feb 2025 08:03:24 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=OA99oxjc; spf=pass (imf27.hostedemail.com: domain of jingxiangzeng.cas@gmail.com designates 209.85.216.41 as permitted sender) smtp.mailfrom=jingxiangzeng.cas@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=1740643404; 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=K+0AxcGzENJyl6fw45SSlGHPPjExVFkdpl7nZomNWzw=; b=vW5f2mpO9WgKsDqfHNgSZ3n7CqYkdbZciKAo5HIlqKF7NPundKAVkwQAd5lrFYoI1y7igg 5c0fN4054Y6sT/1O0KAYajkTAZs2L99iOWJV/dCdK5RorRM4vW54imywNCQWSgAzYm4tg+ bxe9MF405gsw0x+eiwCmyuFa7iAPz40= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=OA99oxjc; spf=pass (imf27.hostedemail.com: domain of jingxiangzeng.cas@gmail.com designates 209.85.216.41 as permitted sender) smtp.mailfrom=jingxiangzeng.cas@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740643404; a=rsa-sha256; cv=none; b=28vG8tFUp06KEVonnDO3wKVJwEUvnR7bT44EP+UW+dMce3BxVj6IqvqY8fFIKy9wOuDvQw ZM0Dw3GCmm85PASsd/jXzErMgYnx5nWRb6AN2J3tOF/UVPtbA+SQpS7r1LcKuOjdOGvT3G 5mcCFrCuf7FppQwZ4O6SRiCTE0W1AQ4= Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-2fea47bcb51so1000644a91.2 for ; Thu, 27 Feb 2025 00:03:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740643403; x=1741248203; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=K+0AxcGzENJyl6fw45SSlGHPPjExVFkdpl7nZomNWzw=; b=OA99oxjc4DJPZPWYf8Mu9HurrQlXbckHD/3CRdzWNOZXJ3/Xx9uZJLf91mu78VCAXN JNOkAVYxQM+ADd68HOh5Ley9OKl/I1kk8Ll9anonEJd1c/NnYbIxdBNybMD3n6EJzpCK JUUu7dypq1LcIHR3Yt0IVj/GokPAiALQ53wIrZbnbVEsjL5PURScmMVVNOsc7EZ0FFFM f1vV44A4VV3tTYAz/tQIzHRXnGM5fh1nwApGOvezGF2hMy6dgAz2oQ251EYVERHdG8Iq B/LWov7aZhHjyaCWVEWQWVdLQXmxvVvG9aslQX8+2hJgXrW5z2GswE/K7hazqrExrmbx rSMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740643403; x=1741248203; h=content-transfer-encoding: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=K+0AxcGzENJyl6fw45SSlGHPPjExVFkdpl7nZomNWzw=; b=TSRbcbCESRk3vA8PKjfDtp3L+G8ODYrcrHpOgzGvKxxUP5AR6jzNnh7jhIcFMVpNaA QOoRJf9Y9jGM+cc5tw9IQuBia45F6if3F7PuOb3ROUQwAuuVSdOzovN1HKBABmHbBepG TCcjLOoHE1IGfB/RkYhR3803CaiYoaNAWwTzNyI6RrCICHmJ8iTj6siS4t9SZ3C3j2ej O2VaSmeiVBmvpY+Joh7dq6he4Fklk8/EZP3PWr5arbRVtVJmEm3QNbMFb9IBLCyXBMc7 C7AVnMsM0bAJ4DSe6ARUZXaylTAttgpd8dY5U+y34Ip5Lz8h4EvyHoFyy00qV/yPcBT6 jUmg== X-Forwarded-Encrypted: i=1; AJvYcCXne2Ffn25EuEetfcL4FIMDHJxe0KITdO/A6k8rQvfbTy/OGAi5hZyFxtjRJgKQnFdz1caYoZnA3g==@kvack.org X-Gm-Message-State: AOJu0YxwQby4iSr1HVD5LN3Tu8AcBnZ46X51c1E2FM3AAlNMVUz/XbS1 yWb1YcXfYmwCXkw2Y854CbSlYGAYurIpEe31+Aa5q5y8c8wubv0Ab3f9bve/c8sSNhgSpt8E5nb bwjg6YGfLxd3o3/Qnidj4i+GRsWs= X-Gm-Gg: ASbGnctPAQj39Ok8QR4IQe6Alqtu5BcFReWjX2ThiUKSSPvDMCw0UECEdA7wwRSSzcw I6j68lSjauSXLkrnag0ix22v5l9QY1PKQwF+fuCPVefzp8cYYLyFYL84kuhupKsgWZZFKjp8miL bfLKDzsas= X-Google-Smtp-Source: AGHT+IG99Hm9YbmEpZGn1/vA/4jSHqWG+OytEAnVgBGig8NzmeL25nL/m9wtAGMAjBDoN9QJq9mrAk8HXVKMpCeJe3c= X-Received: by 2002:a17:90b:3c84:b0:2fc:c262:ef4b with SMTP id 98e67ed59e1d1-2fce86cf0e0mr44500449a91.18.1740643402908; Thu, 27 Feb 2025 00:03:22 -0800 (PST) MIME-Version: 1.0 References: <20250225153020.2514685-1-jingxiangzeng.cas@gmail.com> <20250226011147.GB1500140@cmpxchg.org> In-Reply-To: From: jingxiang zeng Date: Thu, 27 Feb 2025 16:03:11 +0800 X-Gm-Features: AQ5f1JpR3newc2I7o5myADBOXyBlXCBi2xXeUYqyOiT_trmjD__L1sv_2hOlpRk Message-ID: Subject: Re: [PATCH] mm/list_lru: make the case where mlru is NULL as unlikely To: Shakeel Butt Cc: Johannes Weiner , Jingxiang Zeng , linux-mm@kvack.org, akpm@linux-foundation.org, mhocko@kernel.org, roman.gushchin@linux.dev, muchun.song@linux.dev, chengming.zhou@linux.dev, kasong@tencent.com, kernel test robot Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 3301B40005 X-Stat-Signature: xpj5c6mqh4oz54oartndzeyfajunxegx X-HE-Tag: 1740643403-751390 X-HE-Meta: U2FsdGVkX1+BNvRysBr0fdC/tt99q/MDPZ6sBY/S8V+CC8zaP/BPAJbMqop39IDsAYRaGyLh4gZS58yvHUzTI5imR1MkAUZunqASUOnEYlHEiqedT4WITJTFL84fofckeoc1E++65xkODKqZcsljpCqo6Ur/zR4+gTtXQ33xP914WoeOMawkl4X/bPoHAjtVWWNpdsGNkrcvJStSRmbMLokOrazs5djuGmHFftl651123Dt7B+MMPhIuRjhWtpDUSk4mBq/aykZAFZZKVLdGCW6OPppdfxk9Lntx+sSk2ix54kC5bsCGxj0bNlEy8Hzkovco+ZgFD3AFchxZ/D0nYwb2DydzJHMpGfkRZz7eGVUlTPIZC4hbJLhp17RDshwvwcUi4uTI6i47g5kVQIxg+ND4bffhfzb0VP5aj4+GWRacUNbsju2ZENucutd3HGpsnKHG4eAPtIwS6Vg1U8KRa4DewiBvorynMPsuyQzpLZehGvZya8Zs+YbBLg7necRwPOFrKLxHilsSikirei8se9WHYldsrz8QHxRk3iHrVplu/xIY5+0WiN26/b8EKC+sSj6d8ORzRjSjohnvocqVLUqtln2BjJtFlQiQCPKgv1xyzcqcxXrrp3IpjHFvByvSvhHLYWcdhIuSzEfFRb0NVrIQNlkI7MiMZaVLi2M5DuO604TR9VBpZ4UponKTqIrLyKRf9aoUliv/gNMt3OYpn/zOlV30e+YfgePOu82R6exG8s5rJxaXznod5kKd33/eGPpRgQByxsXJE8upHwg5KyjvESrBSVsyOv0xL1uCOI6mGkf7NnX+Gw3daR7WrA54PHuwySk1CE7oCs6zXxG0+RtY44HusQtUmEbQKhBN6KRFLx7E+JmZ65/+ScIEJoQo0tiHNS7ckaLYieTXMqX3LxkvT1d9RA5Kut9wPhutsJlfM+yMeR0PfxsFlIT7i/mS5wDV08+rEv4Doa8p+kF UkQlvXI4 b4wSPQwMkPqtVLjSvPzBTQneX++YCfbpym5yxN/8vOTKHw/AkZOSMAyFsgNxJC2kxaePzM9U7afuWj9UjZkl5WKiNPEdwq1r5z9ju9qKtFqIate33niAw2KrpT4fRdYPbyauXZSbwiJREYmJPjp9uu4oCjY72qXSoA07y06Esoz9gvqcIxpvEPDaz8Nz2TAhnNUtGPRIo2qHhlTKvQioIyrX47upc2EXSH8vnBIhXo8rEccjbK/GZzIF3HJcddzacWqQvTAEf4E8oNu/oecxKCatTnIxWuE2DDhpS2NTOyGGoO50oHjs6xBXgVWrxUD1/7iqKqPvB1QMP3KwyUEZ39PyEVima14gQhNJUnjmOsq49sP2LyNq1UNxpa7RrzwaXBaHibSOjLIAUM4hNREk4R+p8vBzGza6RlMHoUh7bvpzmECWQa868DgQ3TkDAveNmpOoYmrOP92q9TZ40PtCp6GSN7Q== 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 Thu, 27 Feb 2025 at 05:08, Shakeel Butt wrote: > > On Tue, Feb 25, 2025 at 08:11:47PM -0500, Johannes Weiner wrote: > > On Tue, Feb 25, 2025 at 08:23:12AM -0800, Shakeel Butt wrote: > > > On Tue, Feb 25, 2025 at 11:30:20PM +0800, Jingxiang Zeng wrote: > > > > From: Zeng Jingxiang > > > > > > > > In the following memcg_list_lru_alloc() function, mlru here is almo= st > > > > always NULL, so in most cases this should save a function call, mar= k > > > > mlru as unlikely to optimize the code. > > > > do { > > > > xas_lock_irqsave(&xas, flags); > > > > if (!xas_load(&xas) && !css_is_dying(&pos->css)) { > > > > xas_store(&xas, mlru); > > > > if (!xas_error(&xas)) > > > > mlru =3D NULL; > > > > } > > > > xas_unlock_irqrestore(&xas, flags); > > > > } while (xas_nomem(&xas, GFP_KERNEL)); > > > > > if (mlru) > > > > kfree(mlru); > > > > > > > > Reported-by: kernel test robot > > > > Closes: https://lore.kernel.org/oe-kbuild-all/202412290924.UTP7GH2Z= -lkp@intel.com/ > > > > Signed-off-by: Zeng Jingxiang > > > > --- > > > > mm/list_lru.c | 2 +- > > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > > > diff --git a/mm/list_lru.c b/mm/list_lru.c > > > > index 064d2018e265..e7e13513ff8e 100644 > > > > --- a/mm/list_lru.c > > > > +++ b/mm/list_lru.c > > > > @@ -552,7 +552,7 @@ static int memcg_list_lru_alloc(struct mem_cgro= up *memcg, struct list_lru *lru) > > > > } > > > > xas_unlock_irqrestore(&xas, flags); > > > > } while (xas_nomem(&xas, GFP_KERNEL)); > > > > - if (mlru) > > > > + if (unlikely(mlru)) > > > > kfree(mlru); > > > > > > The report is saying not to check at all. So, just remove the check a= nd > > > simply call kfree(mlru) as it handles the NULL check efficiently. > > > > I actually like it in this case. It's an "active comment" that this > > only happens in the failure case and we don't routinely free here. > > > > That said, does it have to free the mlru inside the loop at all? If > > the tree insertion fails, why not reuse it for the next attempt? > > > > diff --git a/mm/list_lru.c b/mm/list_lru.c > > index 7d69434c70e0..490473af3122 100644 > > --- a/mm/list_lru.c > > +++ b/mm/list_lru.c > > @@ -510,7 +510,7 @@ int memcg_list_lru_alloc(struct mem_cgroup *memcg, = struct list_lru *lru, > > gfp_t gfp) > > { > > unsigned long flags; > > - struct list_lru_memcg *mlru; > > + struct list_lru_memcg *mlru =3D NULL; > > struct mem_cgroup *pos, *parent; > > XA_STATE(xas, &lru->xa, 0); > > > > @@ -535,9 +535,11 @@ int memcg_list_lru_alloc(struct mem_cgroup *memcg,= struct list_lru *lru, > > parent =3D parent_mem_cgroup(pos); > > } > > > > - mlru =3D memcg_init_list_lru_one(lru, gfp); > > - if (!mlru) > > - return -ENOMEM; > > + if (!mlru) { > > + mlru =3D memcg_init_list_lru_one(lru, gfp); > > + if (!mlru) > > + return -ENOMEM; > > + } > > xas_set(&xas, pos->kmemcg_id); > > do { > > xas_lock_irqsave(&xas, flags); > > @@ -548,10 +550,11 @@ int memcg_list_lru_alloc(struct mem_cgroup *memcg= , struct list_lru *lru, > > } > > xas_unlock_irqrestore(&xas, flags); > > } while (xas_nomem(&xas, gfp)); > > - if (mlru) > > - kfree(mlru); > > } while (pos !=3D memcg && !css_is_dying(&pos->css)); > > > > + if (unlikely(mlru)) > > + kfree(mlru); > > Yup this looks good. Will unlikely() shutup the warning from bot? > I verified it locally using the COCCI test=EF=BC=8CCOCCI check no longer reports the NULL check error.