|
@@ -125,7 +125,6 @@ struct tnode {
|
|
|
unsigned int empty_children; /* KEYLENGTH bits needed */
|
|
|
union {
|
|
|
struct rcu_head rcu;
|
|
|
- struct work_struct work;
|
|
|
struct tnode *tnode_free;
|
|
|
};
|
|
|
struct rt_trie_node __rcu *child[0];
|
|
@@ -383,12 +382,6 @@ static struct tnode *tnode_alloc(size_t size)
|
|
|
return vzalloc(size);
|
|
|
}
|
|
|
|
|
|
-static void __tnode_vfree(struct work_struct *arg)
|
|
|
-{
|
|
|
- struct tnode *tn = container_of(arg, struct tnode, work);
|
|
|
- vfree(tn);
|
|
|
-}
|
|
|
-
|
|
|
static void __tnode_free_rcu(struct rcu_head *head)
|
|
|
{
|
|
|
struct tnode *tn = container_of(head, struct tnode, rcu);
|
|
@@ -397,10 +390,8 @@ static void __tnode_free_rcu(struct rcu_head *head)
|
|
|
|
|
|
if (size <= PAGE_SIZE)
|
|
|
kfree(tn);
|
|
|
- else {
|
|
|
- INIT_WORK(&tn->work, __tnode_vfree);
|
|
|
- schedule_work(&tn->work);
|
|
|
- }
|
|
|
+ else
|
|
|
+ vfree(tn);
|
|
|
}
|
|
|
|
|
|
static inline void tnode_free(struct tnode *tn)
|