Skip to content

Commit

Permalink
slub: use __cmpxchg_double_slab() at interrupt disabled place
Browse files Browse the repository at this point in the history
get_freelist(), unfreeze_partials() are only called with interrupt disabled,
so __cmpxchg_double_slab() is suitable.

Acked-by: Christoph Lameter <[email protected]>
Signed-off-by: Joonsoo Kim <[email protected]>
Signed-off-by: Pekka Enberg <[email protected]>
  • Loading branch information
JoonsooKim authored and penberg committed Jun 20, 2012
1 parent e7b691b commit d24ac77
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions mm/slub.c
Original file line number Diff line number Diff line change
Expand Up @@ -1872,7 +1872,11 @@ static void deactivate_slab(struct kmem_cache *s, struct page *page, void *freel
}
}

/* 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;
Expand Down Expand Up @@ -1928,7 +1932,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"));
Expand Down Expand Up @@ -2165,6 +2169,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)
{
Expand All @@ -2182,7 +2188,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"));
Expand Down

0 comments on commit d24ac77

Please sign in to comment.