Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mm: vmalloc: refactor vmalloc_dump_obj() function

This patch tends to simplify the function in question, by removing an
extra stack "objp" variable, returning back to an early exit approach if
spin_trylock() fails or VA was not found.

Link: https://lkml.kernel.org/r/20240124180920.50725-2-urezki@gmail.com
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
Reviewed-by: Lorenzo Stoakes <lstoakes@gmail.com>
Cc: Baoquan He <bhe@redhat.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sony.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Uladzislau Rezki (Sony) and committed by
Andrew Morton
8be4d46e 15e02a39

+17 -16
+17 -16
mm/vmalloc.c
··· 4696 4696 #ifdef CONFIG_PRINTK 4697 4697 bool vmalloc_dump_obj(void *object) 4698 4698 { 4699 - void *objp = (void *)PAGE_ALIGN((unsigned long)object); 4700 4699 const void *caller; 4700 + struct vm_struct *vm; 4701 4701 struct vmap_area *va; 4702 4702 struct vmap_node *vn; 4703 4703 unsigned long addr; 4704 4704 unsigned int nr_pages; 4705 - bool success = false; 4706 4705 4707 - vn = addr_to_node((unsigned long)objp); 4706 + addr = PAGE_ALIGN((unsigned long) object); 4707 + vn = addr_to_node(addr); 4708 4708 4709 - if (spin_trylock(&vn->busy.lock)) { 4710 - va = __find_vmap_area((unsigned long)objp, &vn->busy.root); 4709 + if (!spin_trylock(&vn->busy.lock)) 4710 + return false; 4711 4711 4712 - if (va && va->vm) { 4713 - addr = (unsigned long)va->vm->addr; 4714 - caller = va->vm->caller; 4715 - nr_pages = va->vm->nr_pages; 4716 - success = true; 4717 - } 4718 - 4712 + va = __find_vmap_area(addr, &vn->busy.root); 4713 + if (!va || !va->vm) { 4719 4714 spin_unlock(&vn->busy.lock); 4715 + return false; 4720 4716 } 4721 4717 4722 - if (success) 4723 - pr_cont(" %u-page vmalloc region starting at %#lx allocated at %pS\n", 4724 - nr_pages, addr, caller); 4718 + vm = va->vm; 4719 + addr = (unsigned long) vm->addr; 4720 + caller = vm->caller; 4721 + nr_pages = vm->nr_pages; 4722 + spin_unlock(&vn->busy.lock); 4725 4723 4726 - return success; 4724 + pr_cont(" %u-page vmalloc region starting at %#lx allocated at %pS\n", 4725 + nr_pages, addr, caller); 4726 + 4727 + return true; 4727 4728 } 4728 4729 #endif 4729 4730