I'm looking at proto_unregister() in linux-2.6.13: Il calls kmem_cache_destroy() while holding proto_list_lock:
void proto_unregister(struct proto *prot) { write_lock(&proto_list_lock); if (prot->slab != NULL) { kmem_cache_destroy(prot->slab); However, kmem_cache_destroy() may sleep: int kmem_cache_destroy (kmem_cache_t * cachep) { int i; if (!cachep || in_interrupt()) BUG(); /* Don't let CPUs to come and go */ lock_cpu_hotplug(); /* Find the cache in the chain of caches. */ down(&cache_chain_sem); ^^^^^^^^^^^^^^^^^^^^^^^ Am I seeing it right? Bye, -- Daniele Orlandi - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/