I think 3.2 and 3.4 need to backport 43d77867a4f3 ("slub: refactoring unfreeze_partials()") On 3.4 kernel, we found there are tens of thousands of free task_struct slabs in the partial list of node 0 when they should have been discarded, which is essentially a huge memory leak. Looking into the code, seems the cause is, we check n->nr_partial but the page might be in n2 where n != n2, and then the page is added to n2->partial though n2->partial > s->min_partial. static void unfreeze_partials(struct kmem_cache *s) { ... while ((page = c->partial)) { ... c->partial = page->next; ... if (!new.inuse && (!n || n->nr_partial > s->min_partial)) m = M_FREE; else { struct kmem_cache_node *n2 = get_node(s, page_to_nid(page)); m = M_PARTIAL; if (n != n2) { ... n = n2; ... } ... } ... } -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html