|
@@ -2387,11 +2387,13 @@ static void __slab_free(struct kmem_cache *s, struct page *page,
|
|
slab_empty:
|
|
slab_empty:
|
|
if (prior) {
|
|
if (prior) {
|
|
/*
|
|
/*
|
|
- * Slab still on the partial list.
|
|
|
|
|
|
+ * Slab on the partial list.
|
|
*/
|
|
*/
|
|
remove_partial(n, page);
|
|
remove_partial(n, page);
|
|
stat(s, FREE_REMOVE_PARTIAL);
|
|
stat(s, FREE_REMOVE_PARTIAL);
|
|
- }
|
|
|
|
|
|
+ } else
|
|
|
|
+ /* Slab must be on the full list */
|
|
|
|
+ remove_full(s, page);
|
|
|
|
|
|
spin_unlock_irqrestore(&n->list_lock, flags);
|
|
spin_unlock_irqrestore(&n->list_lock, flags);
|
|
stat(s, FREE_SLAB);
|
|
stat(s, FREE_SLAB);
|