On Tue, Feb 25, 2025 at 11:30:20PM +0800, Jingxiang Zeng wrote: > From: Zeng Jingxiang <linuszeng@xxxxxxxxxxx> > > In the following memcg_list_lru_alloc() function, mlru here is almost > always NULL, so in most cases this should save a function call, mark > 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 = NULL; > } > xas_unlock_irqrestore(&xas, flags); > } while (xas_nomem(&xas, GFP_KERNEL)); > > if (mlru) > kfree(mlru); > > Reported-by: kernel test robot <lkp@xxxxxxxxx> > Closes: https://lore.kernel.org/oe-kbuild-all/202412290924.UTP7GH2Z-lkp@xxxxxxxxx/ > Signed-off-by: Zeng Jingxiang <linuszeng@xxxxxxxxxxx> > --- > 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_cgroup *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 and simply call kfree(mlru) as it handles the NULL check efficiently. > set_active_memcg(cur); > } while (pos != memcg && !css_is_dying(&pos->css)); > -- > 2.43.5 > >