From: Hugh Dickins <hu...@google.com>

My load tests on PowerPC freeze within minutes in __slab_free().  I
happened to try PPC first, didn't try without this fix on x86.

It looks as if the author was interrupted while devising the new
cmpxchg_double_slab() version of __slab_free(): its decision to
spin_lock_irqsave() depends on several uninitialized fields, and fixing
that (by copying page to new) mostly fixes it.

But I didn't think about it very much, and this may well not be what the
author intends; and I have seen a couple of much rarer freezes in
__slab_free() on PPC (not yet on x86) even after applying this.

Signed-off-by: Hugh Dickins <hu...@google.com>
Cc: Pekka Enberg <penb...@cs.helsinki.fi>
Cc: Christoph Lameter <c...@linux.com>
Cc: <sta...@kernel.org>
Signed-off-by: Andrew Morton <a...@linux-foundation.org>
---

 mm/slub.c |    1 +
 1 file changed, 1 insertion(+)

diff -puN mm/slub.c~slub-partly-fix-freeze-in-__slab_free mm/slub.c
--- a/mm/slub.c~slub-partly-fix-freeze-in-__slab_free
+++ a/mm/slub.c
@@ -2326,6 +2326,7 @@ static void __slab_free(struct kmem_cach
                return;
 
        do {
+               new = *page;
                prior = page->freelist;
                counters = page->counters;
                set_freepointer(s, object, prior);
_

_______________________________________________
stable mailing list
stable@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/stable

Reply via email to