On Thu, Jan 11, 2024 at 04:38:01PM +0100, Uladzislau Rezki wrote: > On Thu, Jan 11, 2024 at 01:13:59PM +0800, kernel test robot wrote: > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master > > head: 9e21984d62c56a0f6d1fc6f76b646212cfd7fe88 > > commit: e88b85b81d5313a69cb62829b957d4a9ecde600b [12999/13245] mm: vmalloc: offload free_vmap_area_lock lock > > config: arm-defconfig (https://download.01.org/0day-ci/archive/20240111/202401111304.N5dkFGNe-lkp@xxxxxxxxx/config) > > compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1) > > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240111/202401111304.N5dkFGNe-lkp@xxxxxxxxx/reproduce) > > > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > > the same patch/commit), kindly add following tags > > | Reported-by: kernel test robot <lkp@xxxxxxxxx> > > | Closes: https://lore.kernel.org/oe-kbuild-all/202401111304.N5dkFGNe-lkp@xxxxxxxxx/ > > > > All warnings (new ones prefixed by >>): > > > > >> mm/vmalloc.c:4652:25: warning: variable 'addr' is uninitialized when used here [-Wuninitialized] > > va = __find_vmap_area(addr, &vn->busy.root); > > ^~~~ > > mm/vmalloc.c:4645:20: note: initialize the variable 'addr' to silence this warning > > unsigned long addr; > > ^ > > = 0 > > 1 warning generated. > > > > > > vim +/addr +4652 mm/vmalloc.c > > > > a10aa579878fc6 Christoph Lameter 2008-04-28 4637 > > 5bb1bb353cfe34 Paul E. McKenney 2021-01-07 4638 #ifdef CONFIG_PRINTK > > 98f180837a896e Paul E. McKenney 2020-12-08 4639 bool vmalloc_dump_obj(void *object) > > 98f180837a896e Paul E. McKenney 2020-12-08 4640 { > > 98f180837a896e Paul E. McKenney 2020-12-08 4641 void *objp = (void *)PAGE_ALIGN((unsigned long)object); > > 0818e739b5c061 Joel Fernandes (Google 2023-09-04 4642) const void *caller; > > 0818e739b5c061 Joel Fernandes (Google 2023-09-04 4643) struct vmap_area *va; > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4644) struct vmap_node *vn; > > 0818e739b5c061 Joel Fernandes (Google 2023-09-04 4645) unsigned long addr; > > 0818e739b5c061 Joel Fernandes (Google 2023-09-04 4646) unsigned int nr_pages; > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4647) bool success = false; > > 98f180837a896e Paul E. McKenney 2020-12-08 4648 > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4649) vn = addr_to_node((unsigned long)objp); > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4650) > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4651) if (spin_trylock(&vn->busy.lock)) { > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 @4652) va = __find_vmap_area(addr, &vn->busy.root); > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4653) > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4654) if (va && va->vm) { > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4655) addr = (unsigned long)va->vm->addr; > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4656) caller = va->vm->caller; > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4657) nr_pages = va->vm->nr_pages; > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4658) success = true; > > 0818e739b5c061 Joel Fernandes (Google 2023-09-04 4659) } > > 0818e739b5c061 Joel Fernandes (Google 2023-09-04 4660) > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4661) spin_unlock(&vn->busy.lock); > > 0818e739b5c061 Joel Fernandes (Google 2023-09-04 4662) } > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4663) > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4664) if (success) > > bd34dcd4120d7e Paul E. McKenney 2020-12-09 4665 pr_cont(" %u-page vmalloc region starting at %#lx allocated at %pS\n", > > 0818e739b5c061 Joel Fernandes (Google 2023-09-04 4666) nr_pages, addr, caller); > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4667) > > 86817057732a9c Uladzislau Rezki (Sony 2024-01-02 4668) return success; > > 98f180837a896e Paul E. McKenney 2020-12-08 4669 } > > 5bb1bb353cfe34 Paul E. McKenney 2021-01-07 4670 #endif > > 98f180837a896e Paul E. McKenney 2020-12-08 4671 > > > > :::::: The code at line 4652 was first introduced by commit > > :::::: 86817057732a9ce9cefdb6f513b6554a55ebbbbb mm: vmalloc: remove global vmap_area_root rb-tree > > > > :::::: TO: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx> > > :::::: CC: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > > > > -- > > 0-DAY CI Kernel Test Service > > https://github.com/intel/lkp-tests/wiki > > Same, i sent the patch, but just in case i post it here: > > <snip> > From fa613edf6c3d700a02ef109cbd42633b5df30abb Mon Sep 17 00:00:00 2001 > From: "Uladzislau Rezki (Sony)" <urezki@xxxxxxxxx> > Date: Thu, 11 Jan 2024 13:04:07 +0100 > Subject: [PATCH 1/2] mm: vmalloc: Fix a wrong value passed to > __find_vmap_area() > > There was a type in the vmalloc_dump_obj() function. Instead > of passing a real address which is "objp" an "addr" was used > what is wrong and not initialized. > > Reported-by: kernel test robot <lkp@xxxxxxxxx> > Fixes: e88b85b81d5 ("mm: vmalloc: offload free_vmap_area_lock lock") > Closes: https://lore.kernel.org/oe-kbuild-all/202401111810.TKPIXLCs-lkp@xxxxxxxxx/ > Signed-off-by: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx> > --- > mm/vmalloc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > index e30dabf68263..43a6608e1397 100644 > --- a/mm/vmalloc.c > +++ b/mm/vmalloc.c > @@ -4688,7 +4688,7 @@ bool vmalloc_dump_obj(void *object) > vn = addr_to_node((unsigned long)objp); > > if (spin_trylock(&vn->busy.lock)) { > - va = __find_vmap_area(addr, &vn->busy.root); > + va = __find_vmap_area((unsigned long)objp, &vn->busy.root); > > if (va && va->vm) { > addr = (unsigned long)va->vm->addr; > -- > 2.39.2 > <snip> > > it can be folded into: e88b85b81d5 ("mm: vmalloc: offload free_vmap_area_lock lock") > or applied as a separate patch. > Wrong "Fixes" tag. Please see updated version: <snip> >From 98f1fd2d3913f3b7bcbe49785a78f67999151f1c Mon Sep 17 00:00:00 2001 From: "Uladzislau Rezki (Sony)" <urezki@xxxxxxxxx> Date: Thu, 11 Jan 2024 13:04:07 +0100 Subject: [PATCH 1/2] mm: vmalloc: Fix a wrong value passed to __find_vmap_area() There was a type in the vmalloc_dump_obj() function. Instead of passing a real address which is "objp" an "addr" was used what is wrong and not initialized. Reported-by: kernel test robot <lkp@xxxxxxxxx> Fixes: 86817057732a ("mm: vmalloc: remove global vmap_area_root rb-tree") Closes: https://lore.kernel.org/oe-kbuild-all/202401111810.TKPIXLCs-lkp@xxxxxxxxx/ Signed-off-by: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx> --- mm/vmalloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index e30dabf68263..43a6608e1397 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -4688,7 +4688,7 @@ bool vmalloc_dump_obj(void *object) vn = addr_to_node((unsigned long)objp); if (spin_trylock(&vn->busy.lock)) { - va = __find_vmap_area(addr, &vn->busy.root); + va = __find_vmap_area((unsigned long)objp, &vn->busy.root); if (va && va->vm) { addr = (unsigned long)va->vm->addr; -- 2.39.2 <snip>