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

Commit dbc55faa authored by Christoph Lameter's avatar Christoph Lameter Committed by Linus Torvalds
Browse files

SLUB: Make lockdep happy by not calling add_partial with interrupts enabled during bootstrap



If we move the local_irq_enable() to the end of the function then
add_partial() in early_kmem_cache_node_alloc() will be called
with interrupts disabled like during regular operations.

This makes lockdep happy.

Signed-off-by: default avatarChristoph Lameter <clameter@sgi.com>
Tested-by: default avatarAndre Noll <maan@systemlinux.org>
Acked-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 746976a3
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -1798,8 +1798,6 @@ static struct kmem_cache_node * __init early_kmem_cache_node_alloc(gfp_t gfpflag
	BUG_ON(kmalloc_caches->size < sizeof(struct kmem_cache_node));

	page = new_slab(kmalloc_caches, gfpflags | GFP_THISNODE, node);
	/* new_slab() disables interupts */
	local_irq_enable();

	BUG_ON(!page);
	n = page->freelist;
@@ -1811,6 +1809,12 @@ static struct kmem_cache_node * __init early_kmem_cache_node_alloc(gfp_t gfpflag
	init_kmem_cache_node(n);
	atomic_long_inc(&n->nr_slabs);
	add_partial(n, page);

	/*
	 * new_slab() disables interupts. If we do not reenable interrupts here
	 * then bootup would continue with interrupts disabled.
	 */
	local_irq_enable();
	return n;
}