[PATCH] revert slab.c locking change
authorIngo Molnar <mingo@elte.hu>
Thu, 13 Jul 2006 07:12:21 +0000 (09:12 +0200)
committerLinus Torvalds <torvalds@g5.osdl.org>
Thu, 13 Jul 2006 22:38:43 +0000 (15:38 -0700)
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>
mm/slab.c

index 5a57cda7490d9b666d97b04957efb9c05c02fe59..0f20843beffdb504574dc471bfaacf12abfd902d 100644 (file)
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -3119,16 +3119,7 @@ static void free_block(struct kmem_cache *cachep, void **objpp, int nr_objects,
                if (slabp->inuse == 0) {
                        if (l3->free_objects > l3->free_limit) {
                                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);
-                               spin_lock(&l3->list_lock);
                        } else {
                                list_add(&slabp->list, &l3->slabs_free);
                        }