X-Git-Url: http://git.monstr.eu/?a=blobdiff_plain;f=mm%2Fvmalloc.c;h=4f5f8c907897aeb51c5c09272ad802eaad8eb320;hb=7b0b78df9cca7344960decf3a16805e8378a43b7;hp=4d88fe5a277ac2d0e520f37f4dc7ec0a779fc9fe;hpb=16182ac1f02c8a5fc9753f9b8b5f3ef8c01707d8;p=linux-2.6-microblaze.git diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 4d88fe5a277a..4f5f8c907897 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -2420,8 +2420,10 @@ void *vmap(struct page **pages, unsigned int count, return NULL; } - if (flags & VM_MAP_PUT_PAGES) + if (flags & VM_MAP_PUT_PAGES) { area->pages = pages; + area->nr_pages = count; + } return area->addr; } EXPORT_SYMBOL(vmap); @@ -3448,6 +3450,19 @@ void pcpu_free_vm_areas(struct vm_struct **vms, int nr_vms) } #endif /* CONFIG_SMP */ +bool vmalloc_dump_obj(void *object) +{ + struct vm_struct *vm; + void *objp = (void *)PAGE_ALIGN((unsigned long)object); + + vm = find_vm_area(objp); + if (!vm) + return false; + pr_cont(" %u-page vmalloc region starting at %#lx allocated at %pS\n", + vm->nr_pages, (unsigned long)vm->addr, vm->caller); + return true; +} + #ifdef CONFIG_PROC_FS static void *s_start(struct seq_file *m, loff_t *pos) __acquires(&vmap_purge_lock)