diff options
author | Andrew Morton <akpm@osdl.org> | 2006-10-17 00:09:57 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-17 08:18:44 -0700 |
commit | 286e1ea3ac1ca4f503ebbb3020bdb0cbe6adffac (patch) | |
tree | b8e332d7aa9a64d6fe49501deb3ac5a18a708f3f /mm/vmalloc.c | |
parent | c430169e0c9f42f2cd27e0a6161e7ff4dc7e608d (diff) | |
download | op-kernel-dev-286e1ea3ac1ca4f503ebbb3020bdb0cbe6adffac.zip op-kernel-dev-286e1ea3ac1ca4f503ebbb3020bdb0cbe6adffac.tar.gz |
[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/vmalloc.c')
-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 750ab6e..1133dd3 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, if (array_size > PAGE_SIZE) { pages = __vmalloc_node(array_size, gfp_mask, PAGE_KERNEL, node); area->flags |= VM_VPAGES; - } else - pages = kmalloc_node(array_size, (gfp_mask & ~__GFP_HIGHMEM), node); + } else { + pages = kmalloc_node(array_size, + (gfp_mask & ~(__GFP_HIGHMEM | __GFP_ZERO)), + node); + } area->pages = pages; if (!area->pages) { remove_vm_area(area->addr); |