[PATCH] revert slab.c locking change
Chandra Seetharaman reported SLAB crashes caused by the slab.c lock annotation patch. There is only one chunk of that patch that has a material effect on the slab logic - this patch undoes that chunk. This was confirmed to fix the slab problem by Chandra. Signed-off-by: Ingo Molnar <mingo@elte.hu> Tested-by: Chandra Seetharaman <sekharan@us.ibm.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
3e705f279a
commit
fc818301a8
@@ -3119,16 +3119,7 @@ static void free_block(struct kmem_cache *cachep, void **objpp, int nr_objects,
|
|||||||
if (slabp->inuse == 0) {
|
if (slabp->inuse == 0) {
|
||||||
if (l3->free_objects > l3->free_limit) {
|
if (l3->free_objects > l3->free_limit) {
|
||||||
l3->free_objects -= cachep->num;
|
l3->free_objects -= cachep->num;
|
||||||
/*
|
|
||||||
* It is safe to drop the lock. The slab is
|
|
||||||
* no longer linked to the cache. cachep
|
|
||||||
* cannot disappear - we are using it and
|
|
||||||
* all destruction of caches must be
|
|
||||||
* serialized properly by the user.
|
|
||||||
*/
|
|
||||||
spin_unlock(&l3->list_lock);
|
|
||||||
slab_destroy(cachep, slabp);
|
slab_destroy(cachep, slabp);
|
||||||
spin_lock(&l3->list_lock);
|
|
||||||
} else {
|
} else {
|
||||||
list_add(&slabp->list, &l3->slabs_free);
|
list_add(&slabp->list, &l3->slabs_free);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user