Commit 00203563 authored by Al Viro's avatar Al Viro Committed by David S. Miller

fib_trie: no need to delay vfree()

Now that vfree() can be called from interrupt contexts, there's no
need to play games with schedule_work() to escape calling vfree()
from RCU callbacks.
Signed-off-by: default avatarAl Viro <>
Signed-off-by: default avatarDavid S. Miller <>
parent b56141ab
......@@ -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);
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)
else {
INIT_WORK(&tn->work, __tnode_vfree);
static inline void tnode_free(struct tnode *tn)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment