|
@@ -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) ?
|