The patch titled slab: extract __kmem_cache_destroy from kmem_cache_destroy has been removed from the -mm tree. Its filename is slab-extract-__kmem_cache_destroy-from-kmem_cache_destroy.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ Subject: slab: extract __kmem_cache_destroy from kmem_cache_destroy From: Christoph Lameter <clameter@xxxxxxx> The ability to free memory allocated to a slab cache is also useful if an error occurs during setup of a slab. So extract the function. Signed-off-by: Christoph Lameter <clameter@xxxxxxx> Cc: Pekka Enberg <penberg@xxxxxxxxxxxxxx> Cc: Manfred Spraul <manfred@xxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- mm/slab.c | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff -puN mm/slab.c~slab-extract-__kmem_cache_destroy-from-kmem_cache_destroy mm/slab.c --- a/mm/slab.c~slab-extract-__kmem_cache_destroy-from-kmem_cache_destroy +++ a/mm/slab.c @@ -1833,6 +1833,27 @@ static void set_up_list3s(struct kmem_ca } } +static void __kmem_cache_destroy(struct kmem_cache *cachep) +{ + int i; + struct kmem_list3 *l3; + + for_each_online_cpu(i) + kfree(cachep->array[i]); + + /* NUMA: free the list3 structures */ + for_each_online_node(i) { + l3 = cachep->nodelists[i]; + if (l3) { + kfree(l3->shared); + free_alien_cache(l3->alien); + kfree(l3); + } + } + kmem_cache_free(&cache_cache, cachep); +} + + /** * calculate_slab_order - calculate size (page order) of slabs * @cachep: pointer to the cache that is being created @@ -2404,9 +2425,6 @@ EXPORT_SYMBOL(kmem_cache_shrink); */ int kmem_cache_destroy(struct kmem_cache *cachep) { - int i; - struct kmem_list3 *l3; - BUG_ON(!cachep || in_interrupt()); /* Don't let CPUs to come and go */ @@ -2432,19 +2450,7 @@ int kmem_cache_destroy(struct kmem_cache if (unlikely(cachep->flags & SLAB_DESTROY_BY_RCU)) synchronize_rcu(); - for_each_online_cpu(i) - kfree(cachep->array[i]); - - /* NUMA: free the list3 structures */ - for_each_online_node(i) { - l3 = cachep->nodelists[i]; - if (l3) { - kfree(l3->shared); - free_alien_cache(l3->alien); - kfree(l3); - } - } - kmem_cache_free(&cache_cache, cachep); + __kmem_cache_destroy(cachep); unlock_cpu_hotplug(); return 0; } _ Patches currently in -mm which might be from clameter@xxxxxxx are origin.patch git-ia64.patch slab-fix-kmalloc_node-applying-memory-policies-if-nodeid-==-numa_node_id.patch add-numa_build-definition-in-kernelh-to-avoid-ifdef.patch disable-gfp_thisnode-in-the-non-numa-case.patch gfp_thisnode-for-the-slab-allocator-v2.patch gfp_thisnode-for-the-slab-allocator-v2-fix-3.patch add-node-to-zone-for-the-numa-case.patch add-node-to-zone-for-the-numa-case-fix.patch get-rid-of-zone_table.patch get-rid-of-zone_table-fix.patch do-not-allocate-pagesets-for-unpopulated-zones.patch zone_statistics-use-hot-node-instead-of-cold-zone_pgdat.patch deal-with-cases-of-zone_dma-meaning-the-first-zone.patch introduce-config_zone_dma.patch optional-zone_dma-in-the-vm.patch optional-zone_dma-for-i386.patch optional-zone_dma-for-x86_64.patch optional-zone_dma-for-ia64.patch remove-zone_dma-remains-from-parisc.patch remove-zone_dma-remains-from-sh-sh64.patch radix-tree-rcu-lockless-readside.patch scheduler-numa-aware-placement-of-sched_group_allnodes.patch zvc-support-nr_slab_reclaimable--nr_slab_unreclaimable-swap_prefetch.patch reduce-max_nr_zones-swap_prefetch-remove-incorrect-use-of-zone_highmem.patch numa-add-zone_to_nid-function-swap_prefetch.patch readahead-state-based-method-aging-accounting-apply-type-enum-zone_type-readahead.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html