aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2006-10-17 03:09:57 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-17 11:18:44 -0400
commit286e1ea3ac1ca4f503ebbb3020bdb0cbe6adffac (patch)
treeb8e332d7aa9a64d6fe49501deb3ac5a18a708f3f /mm
parentc430169e0c9f42f2cd27e0a6161e7ff4dc7e608d (diff)
[PATCH] vmalloc(): don't pass __GFP_ZERO to slab
A recent change to the vmalloc() code accidentally resulted in us passing __GFP_ZERO into the slab allocator. But we only wanted __GFP_ZERO for the actual pages whcih are being vmalloc()ed, and passing __GFP_ZERO into slab is not a rational thing to ask for. Cc: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm')
-rw-r--r--mm/vmalloc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 750ab6ed13f..1133dd3aafc 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -428,8 +428,11 @@ void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
428 if (array_size > PAGE_SIZE) { 428 if (array_size > PAGE_SIZE) {
429 pages = __vmalloc_node(array_size, gfp_mask, PAGE_KERNEL, node); 429 pages = __vmalloc_node(array_size, gfp_mask, PAGE_KERNEL, node);
430 area->flags |= VM_VPAGES; 430 area->flags |= VM_VPAGES;
431 } else 431 } else {
432 pages = kmalloc_node(array_size, (gfp_mask & ~__GFP_HIGHMEM), node); 432 pages = kmalloc_node(array_size,
433 (gfp_mask & ~(__GFP_HIGHMEM | __GFP_ZERO)),
434 node);
435 }
433 area->pages = pages; 436 area->pages = pages;
434 if (!area->pages) { 437 if (!area->pages) {
435 remove_vm_area(area->addr); 438 remove_vm_area(area->addr);