On Fri, 18 May 2012, Joonsoo Kim wrote: > get_freelist(), unfreeze_partials() are only called with interrupt disabled, > so __cmpxchg_double_slab() is suitable. > > Acked-by: Christoph Lameter <cl@xxxxxxxxx> > Signed-off-by: Joonsoo Kim <js1304@xxxxxxxxx> Applied, thanks! > --- > According to comment from Pekka, add some comment. > > diff --git a/mm/slub.c b/mm/slub.c > index 0c3105c..d7f8291 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -1879,7 +1879,11 @@ redo: > } > } > > -/* Unfreeze all the cpu partial slabs */ > +/* > + * Unfreeze all the cpu partial slabs. > + * > + * This function must be called with interrupt disabled. > + */ > static void unfreeze_partials(struct kmem_cache *s) > { > struct kmem_cache_node *n = NULL; > @@ -1935,7 +1939,7 @@ static void unfreeze_partials(struct kmem_cache *s) > l = m; > } > > - } while (!cmpxchg_double_slab(s, page, > + } while (!__cmpxchg_double_slab(s, page, > old.freelist, old.counters, > new.freelist, new.counters, > "unfreezing slab")); > @@ -2163,6 +2167,8 @@ static inline void *new_slab_objects(struct kmem_cache *s, gfp_t flags, > * The page is still frozen if the return value is not NULL. > * > * If this function returns NULL then the page has been unfrozen. > + * > + * This function must be called with interrupt disabled. > */ > static inline void *get_freelist(struct kmem_cache *s, struct page *page) > { > @@ -2179,7 +2185,7 @@ static inline void *get_freelist(struct kmem_cache *s, struct page *page) > new.inuse = page->objects; > new.frozen = freelist != NULL; > > - } while (!cmpxchg_double_slab(s, page, > + } while (!__cmpxchg_double_slab(s, page, > freelist, counters, > NULL, new.counters, > "get_freelist")); > -- > 1.7.9.5 > > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>