diff options
author | Glauber Costa <glommer@redhat.com> | 2009-01-06 17:39:19 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-06 18:59:01 -0500 |
commit | 848778483351e90f9a2c587bdbe0c78b17c1e30b (patch) | |
tree | 9248871a3e40b68a709bf69efeaf5c52cb45cbd1 /mm/vmalloc.c | |
parent | c1279c4ef37a06ba708e6b1f6fd98b45c52770f6 (diff) |
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: Glauber Costa <glommer@redhat.com>
Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/vmalloc.c')
-rw-r--r-- | mm/vmalloc.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 2644afb9d6ab..b62ea569aa43 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c | |||
@@ -1376,7 +1376,8 @@ void *vmalloc_user(unsigned long size) | |||
1376 | struct vm_struct *area; | 1376 | struct vm_struct *area; |
1377 | void *ret; | 1377 | void *ret; |
1378 | 1378 | ||
1379 | ret = __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO, PAGE_KERNEL); | 1379 | ret = __vmalloc_node(size, GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO, |
1380 | PAGE_KERNEL, -1, __builtin_return_address(0)); | ||
1380 | if (ret) { | 1381 | if (ret) { |
1381 | area = find_vm_area(ret); | 1382 | area = find_vm_area(ret); |
1382 | area->flags |= VM_USERMAP; | 1383 | area->flags |= VM_USERMAP; |
@@ -1421,7 +1422,8 @@ EXPORT_SYMBOL(vmalloc_node); | |||
1421 | 1422 | ||
1422 | void *vmalloc_exec(unsigned long size) | 1423 | void *vmalloc_exec(unsigned long size) |
1423 | { | 1424 | { |
1424 | return __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC); | 1425 | return __vmalloc_node(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC, |
1426 | -1, __builtin_return_address(0)); | ||
1425 | } | 1427 | } |
1426 | 1428 | ||
1427 | #if defined(CONFIG_64BIT) && defined(CONFIG_ZONE_DMA32) | 1429 | #if defined(CONFIG_64BIT) && defined(CONFIG_ZONE_DMA32) |
@@ -1441,7 +1443,8 @@ void *vmalloc_exec(unsigned long size) | |||
1441 | */ | 1443 | */ |
1442 | void *vmalloc_32(unsigned long size) | 1444 | void *vmalloc_32(unsigned long size) |
1443 | { | 1445 | { |
1444 | return __vmalloc(size, GFP_VMALLOC32, PAGE_KERNEL); | 1446 | return __vmalloc_node(size, GFP_VMALLOC32, PAGE_KERNEL, |
1447 | -1, __builtin_return_address(0)); | ||
1445 | } | 1448 | } |
1446 | EXPORT_SYMBOL(vmalloc_32); | 1449 | EXPORT_SYMBOL(vmalloc_32); |
1447 | 1450 | ||
@@ -1457,7 +1460,8 @@ void *vmalloc_32_user(unsigned long size) | |||
1457 | struct vm_struct *area; | 1460 | struct vm_struct *area; |
1458 | void *ret; | 1461 | void *ret; |
1459 | 1462 | ||
1460 | ret = __vmalloc(size, GFP_VMALLOC32 | __GFP_ZERO, PAGE_KERNEL); | 1463 | ret = __vmalloc_node(size, GFP_VMALLOC32 | __GFP_ZERO, PAGE_KERNEL, |
1464 | -1, __builtin_return_address(0)); | ||
1461 | if (ret) { | 1465 | if (ret) { |
1462 | area = find_vm_area(ret); | 1466 | area = find_vm_area(ret); |
1463 | area->flags |= VM_USERMAP; | 1467 | area->flags |= VM_USERMAP; |