diff --git a/[refs] b/[refs] index f7a1d70d54d6..3c76627be9d8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 20cea9683ecc6dd75a80c0dd02dc69c64e95be75 +refs/heads/master: 737b719ed6569ffcd015fcdf3039dc7af47af877 diff --git a/trunk/mm/slub.c b/trunk/mm/slub.c index 0e0504ed6ff1..e517d435e5dc 100644 --- a/trunk/mm/slub.c +++ b/trunk/mm/slub.c @@ -1299,13 +1299,7 @@ static struct page *allocate_slab(struct kmem_cache *s, gfp_t flags, int node) stat(s, ORDER_FALLBACK); } - if (flags & __GFP_WAIT) - local_irq_disable(); - - if (!page) - return NULL; - - if (kmemcheck_enabled + if (kmemcheck_enabled && page && !(s->flags & (SLAB_NOTRACK | DEBUG_DEFAULT_FLAGS))) { int pages = 1 << oo_order(oo); @@ -1321,6 +1315,11 @@ static struct page *allocate_slab(struct kmem_cache *s, gfp_t flags, int node) kmemcheck_mark_unallocated_pages(page, pages); } + if (flags & __GFP_WAIT) + local_irq_disable(); + if (!page) + return NULL; + page->objects = oo_objects(oo); mod_zone_page_state(page_zone(page), (s->flags & SLAB_RECLAIM_ACCOUNT) ?