Avoid double memclear() in SLOB/SLUB

Both slob and slub react to __GFP_ZERO by clearing the allocation, which
means that passing the GFP_ZERO bit down to the page allocator is just
wasteful and pointless.

Acked-by: Matt Mackall <mpm@selenic.com>
Reviewed-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Linus Torvalds 2007-12-09 10:14:36 -08:00
parent 94545baded
commit 7fd272550b
2 changed files with 4 additions and 1 deletions

View File

@ -330,7 +330,7 @@ static void *slob_alloc(size_t size, gfp_t gfp, int align, int node)
/* Not enough space: must allocate a new page */ /* Not enough space: must allocate a new page */
if (!b) { if (!b) {
b = slob_new_page(gfp, 0, node); b = slob_new_page(gfp & ~__GFP_ZERO, 0, node);
if (!b) if (!b)
return 0; return 0;
sp = (struct slob_page *)virt_to_page(b); sp = (struct slob_page *)virt_to_page(b);

View File

@ -1468,6 +1468,9 @@ static void *__slab_alloc(struct kmem_cache *s,
void **object; void **object;
struct page *new; struct page *new;
/* We handle __GFP_ZERO in the caller */
gfpflags &= ~__GFP_ZERO;
if (!c->page) if (!c->page)
goto new_slab; goto new_slab;