|
@@ -288,7 +288,7 @@ static struct neighbour *neigh_alloc(struct neigh_table *tbl)
|
|
|
goto out_entries;
|
|
|
}
|
|
|
|
|
|
- n = kmem_cache_zalloc(tbl->kmem_cachep, GFP_ATOMIC);
|
|
|
+ n = kzalloc(tbl->entry_size, GFP_ATOMIC);
|
|
|
if (!n)
|
|
|
goto out_entries;
|
|
|
|
|
@@ -678,12 +678,6 @@ static inline void neigh_parms_put(struct neigh_parms *parms)
|
|
|
neigh_parms_destroy(parms);
|
|
|
}
|
|
|
|
|
|
-static void neigh_destroy_rcu(struct rcu_head *head)
|
|
|
-{
|
|
|
- struct neighbour *neigh = container_of(head, struct neighbour, rcu);
|
|
|
-
|
|
|
- kmem_cache_free(neigh->tbl->kmem_cachep, neigh);
|
|
|
-}
|
|
|
/*
|
|
|
* neighbour must already be out of the table;
|
|
|
*
|
|
@@ -711,7 +705,7 @@ void neigh_destroy(struct neighbour *neigh)
|
|
|
NEIGH_PRINTK2("neigh %p is destroyed.\n", neigh);
|
|
|
|
|
|
atomic_dec(&neigh->tbl->entries);
|
|
|
- call_rcu(&neigh->rcu, neigh_destroy_rcu);
|
|
|
+ kfree_rcu(neigh, rcu);
|
|
|
}
|
|
|
EXPORT_SYMBOL(neigh_destroy);
|
|
|
|
|
@@ -1486,11 +1480,6 @@ void neigh_table_init_no_netlink(struct neigh_table *tbl)
|
|
|
tbl->parms.reachable_time =
|
|
|
neigh_rand_reach_time(tbl->parms.base_reachable_time);
|
|
|
|
|
|
- if (!tbl->kmem_cachep)
|
|
|
- tbl->kmem_cachep =
|
|
|
- kmem_cache_create(tbl->id, tbl->entry_size, 0,
|
|
|
- SLAB_HWCACHE_ALIGN|SLAB_PANIC,
|
|
|
- NULL);
|
|
|
tbl->stats = alloc_percpu(struct neigh_statistics);
|
|
|
if (!tbl->stats)
|
|
|
panic("cannot create neighbour cache statistics");
|
|
@@ -1575,9 +1564,6 @@ int neigh_table_clear(struct neigh_table *tbl)
|
|
|
free_percpu(tbl->stats);
|
|
|
tbl->stats = NULL;
|
|
|
|
|
|
- kmem_cache_destroy(tbl->kmem_cachep);
|
|
|
- tbl->kmem_cachep = NULL;
|
|
|
-
|
|
|
return 0;
|
|
|
}
|
|
|
EXPORT_SYMBOL(neigh_table_clear);
|