lkml.org 
[lkml]   [2011]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH next/mmotm] slub: partly fix freeze in __slab_free
    On 7/11/11 10:39 PM, Eric Dumazet wrote:
    > Le lundi 11 juillet 2011 à 11:58 -0700, Hugh Dickins a écrit :
    >> 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<hughd@google.com>
    >> ---
    >> mm/slub.c | 1 +
    >> 1 file changed, 1 insertion(+)
    >>
    >> --- mmotm/mm/slub.c 2011-07-08 18:59:44.135443127 -0700
    >> +++ linux/mm/slub.c 2011-07-10 05:07:08.000000000 -0700
    >> @@ -2217,6 +2217,7 @@ static void __slab_free(struct kmem_cach
    >> return;
    >>
    >> do {
    >> + new = *page;
    >> prior = page->freelist;
    >> counters = page->counters;
    >> set_freepointer(s, object, prior);
    >> --
    > I suspect you hit the bug on 32bit arch ?
    >
    > What about following patch instead ?
    >
    > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
    > index 3d76a43..1351d28 100644
    > --- a/include/linux/mm_types.h
    > +++ b/include/linux/mm_types.h
    > @@ -62,7 +62,7 @@ struct page {
    > struct { /* SLUB cmpxchg_double area */
    > void *freelist;
    > union {
    > - unsigned long counters;
    > + u64 counters;
    > struct {
    > unsigned inuse:16;
    > unsigned objects:15;
    >

    Christoph?
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2011-07-12 08:15    [W:2.772 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site