Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 737b719e authored by David Rientjes's avatar David Rientjes Committed by Pekka Enberg
Browse files

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: default avatarFengguang Wu <fengguang.wu@intel.com>
Acked-by: default avatarSteven Rostedt <rostedt@goodmis.org>
Tested-by: default avatarFengguang Wu <fengguang.wu@intel.com>
Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
parent 20cea968
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -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) ?