Commit 84877848 authored by Glauber Costa's avatar Glauber Costa Committed by Linus Torvalds

mm: vmalloc improve vmallocinfo

If we do that, output of files like /proc/vmallocinfo will show things
like "vmalloc_32", "vmalloc_user", or whomever the caller was as the
caller.  This info is not as useful as the real caller of the allocation.

So, proposal is to call __vmalloc_node node directly, with matching
parameters to save the caller information
Signed-off-by: default avatarGlauber Costa <glommer@redhat.com>
Signed-off-by: default avatarNick Piggin <npiggin@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent c1279c4e
...@@ -1376,7 +1376,8 @@ void *vmalloc_user(unsigned long size) ...@@ -1376,7 +1376,8 @@ void *vmalloc_user(unsigned long size)
struct vm_struct *area; struct vm_struct *area;
void *ret; void *ret;
ret = __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO, PAGE_KERNEL); ret = __vmalloc_node(size, GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO,
PAGE_KERNEL, -1, __builtin_return_address(0));
if (ret) { if (ret) {
area = find_vm_area(ret); area = find_vm_area(ret);
area->flags |= VM_USERMAP; area->flags |= VM_USERMAP;
...@@ -1421,7 +1422,8 @@ EXPORT_SYMBOL(vmalloc_node); ...@@ -1421,7 +1422,8 @@ EXPORT_SYMBOL(vmalloc_node);
void *vmalloc_exec(unsigned long size) void *vmalloc_exec(unsigned long size)
{ {
return __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC); return __vmalloc_node(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC,
-1, __builtin_return_address(0));
} }
#if defined(CONFIG_64BIT) && defined(CONFIG_ZONE_DMA32) #if defined(CONFIG_64BIT) && defined(CONFIG_ZONE_DMA32)
...@@ -1441,7 +1443,8 @@ void *vmalloc_exec(unsigned long size) ...@@ -1441,7 +1443,8 @@ void *vmalloc_exec(unsigned long size)
*/ */
void *vmalloc_32(unsigned long size) void *vmalloc_32(unsigned long size)
{ {
return __vmalloc(size, GFP_VMALLOC32, PAGE_KERNEL); return __vmalloc_node(size, GFP_VMALLOC32, PAGE_KERNEL,
-1, __builtin_return_address(0));
} }
EXPORT_SYMBOL(vmalloc_32); EXPORT_SYMBOL(vmalloc_32);
...@@ -1457,7 +1460,8 @@ void *vmalloc_32_user(unsigned long size) ...@@ -1457,7 +1460,8 @@ void *vmalloc_32_user(unsigned long size)
struct vm_struct *area; struct vm_struct *area;
void *ret; void *ret;
ret = __vmalloc(size, GFP_VMALLOC32 | __GFP_ZERO, PAGE_KERNEL); ret = __vmalloc_node(size, GFP_VMALLOC32 | __GFP_ZERO, PAGE_KERNEL,
-1, __builtin_return_address(0));
if (ret) { if (ret) {
area = find_vm_area(ret); area = find_vm_area(ret);
area->flags |= VM_USERMAP; area->flags |= VM_USERMAP;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment