mm, slub: ensure irqs are enabled for kmemcheck
kmemcheck_alloc_shadow() requires irqs to be enabled, so wait to disable them until after its called for __GFP_WAIT allocations. This fixes a warning for such allocations: WARNING: at kernel/lockdep.c:2739 lockdep_trace_alloc+0x14e/0x1c0() Acked-by: Fengguang Wu <fengguang.wu@intel.com> Acked-by: Steven Rostedt <rostedt@goodmis.org> Tested-by: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: David Rientjes <rientjes@google.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
parent
20cea9683e
commit
737b719ed6
13
mm/slub.c
13
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) ?
|
||||
|
|
Loading…
Reference in New Issue