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: Christoph Lameter <clameter@sgi.com> Tested-by: Andre Noll <maan@systemlinux.org> Acked-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
746976a301
commit
dbc55faa64
|
@ -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));
|
BUG_ON(kmalloc_caches->size < sizeof(struct kmem_cache_node));
|
||||||
|
|
||||||
page = new_slab(kmalloc_caches, gfpflags | GFP_THISNODE, node);
|
page = new_slab(kmalloc_caches, gfpflags | GFP_THISNODE, node);
|
||||||
/* new_slab() disables interupts */
|
|
||||||
local_irq_enable();
|
|
||||||
|
|
||||||
BUG_ON(!page);
|
BUG_ON(!page);
|
||||||
n = page->freelist;
|
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);
|
init_kmem_cache_node(n);
|
||||||
atomic_long_inc(&n->nr_slabs);
|
atomic_long_inc(&n->nr_slabs);
|
||||||
add_partial(n, page);
|
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;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue