[PATCH] nommu: use compound page in slab allocator

The earlier patch to consolidate mmu and nommu page allocation and
refcounting by using compound pages for nommu allocations had a bug:
kmalloc slabs who's pages were initially allocated by a non-__GFP_COMP
allocator could be passed into mm/nommu.c kmalloc allocations which really
wanted __GFP_COMP underlying pages.  Fix that by having nommu pass
__GFP_COMP to all higher order slab allocations.

Signed-off-by: Luke Yang <luke.adi@gmail.com>
Acked-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Luke Yang 2006-04-10 22:52:56 -07:00 committed by Linus Torvalds
parent fb7faf3313
commit d6fef9da19
1 changed files with 7 additions and 0 deletions

View File

@ -1456,7 +1456,14 @@ static void *kmem_getpages(struct kmem_cache *cachep, gfp_t flags, int nodeid)
int i;
flags |= cachep->gfpflags;
#ifndef CONFIG_MMU
/* nommu uses slab's for process anonymous memory allocations, so
* requires __GFP_COMP to properly refcount higher order allocations"
*/
page = alloc_pages_node(nodeid, (flags | __GFP_COMP), cachep->gfporder);
#else
page = alloc_pages_node(nodeid, flags, cachep->gfporder);
#endif
if (!page)
return NULL;
addr = page_address(page);