|
@@ -1889,21 +1889,10 @@ static void slab_destroy(struct kmem_cache *cachep, struct page *page)
|
|
|
|
|
|
freelist = page->freelist;
|
|
|
slab_destroy_debugcheck(cachep, page);
|
|
|
- if (unlikely(cachep->flags & SLAB_DESTROY_BY_RCU)) {
|
|
|
- struct rcu_head *head;
|
|
|
-
|
|
|
- /*
|
|
|
- * RCU free overloads the RCU head over the LRU.
|
|
|
- * slab_page has been overloeaded over the LRU,
|
|
|
- * however it is not used from now on so that
|
|
|
- * we can use it safely.
|
|
|
- */
|
|
|
- head = (void *)&page->rcu_head;
|
|
|
- call_rcu(head, kmem_rcu_free);
|
|
|
-
|
|
|
- } else {
|
|
|
+ if (unlikely(cachep->flags & SLAB_DESTROY_BY_RCU))
|
|
|
+ call_rcu(&page->rcu_head, kmem_rcu_free);
|
|
|
+ else
|
|
|
kmem_freepages(cachep, page);
|
|
|
- }
|
|
|
|
|
|
/*
|
|
|
* From now on, we don't use freelist
|