Re: [PATCH 1/1] Fix a wrong value passed to __find_vmap_area()

From: Nathan Chancellor
Date: Thu Jan 11 2024 - 10:55:26 EST


On Thu, Jan 11, 2024 at 01:11:04PM +0100, Uladzislau Rezki (Sony) wrote:
> 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")

I am not sure that e88b85b81d5 introduced this. Based on the diff, I
think it was actually commit 86817057732a ("mm: vmalloc: remove global
vmap_area_root rb-tree"). Does not really matter for the patch text but
I think it does matter for what change this gets squashed into.

> 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
>