diff options
author | Andrew Morton <akpm@osdl.org> | 2006-10-17 03:09:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-17 11:18:44 -0400 |
commit | 286e1ea3ac1ca4f503ebbb3020bdb0cbe6adffac (patch) | |
tree | b8e332d7aa9a64d6fe49501deb3ac5a18a708f3f | |
parent | c430169e0c9f42f2cd27e0a6161e7ff4dc7e608d (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>
-rw-r--r-- | mm/vmalloc.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 750ab6ed13fc..1133dd3aafcf 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); |