diff options
-rw-r--r-- | net/ipv4/fib_trie.c | 13 |
1 files changed, 2 insertions, 11 deletions
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index ff06b7543d9f..49616fed9340 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c | |||
@@ -125,7 +125,6 @@ struct tnode { | |||
125 | unsigned int empty_children; /* KEYLENGTH bits needed */ | 125 | unsigned int empty_children; /* KEYLENGTH bits needed */ |
126 | union { | 126 | union { |
127 | struct rcu_head rcu; | 127 | struct rcu_head rcu; |
128 | struct work_struct work; | ||
129 | struct tnode *tnode_free; | 128 | struct tnode *tnode_free; |
130 | }; | 129 | }; |
131 | struct rt_trie_node __rcu *child[0]; | 130 | struct rt_trie_node __rcu *child[0]; |
@@ -383,12 +382,6 @@ static struct tnode *tnode_alloc(size_t size) | |||
383 | return vzalloc(size); | 382 | return vzalloc(size); |
384 | } | 383 | } |
385 | 384 | ||
386 | static void __tnode_vfree(struct work_struct *arg) | ||
387 | { | ||
388 | struct tnode *tn = container_of(arg, struct tnode, work); | ||
389 | vfree(tn); | ||
390 | } | ||
391 | |||
392 | static void __tnode_free_rcu(struct rcu_head *head) | 385 | static void __tnode_free_rcu(struct rcu_head *head) |
393 | { | 386 | { |
394 | struct tnode *tn = container_of(head, struct tnode, rcu); | 387 | struct tnode *tn = container_of(head, struct tnode, rcu); |
@@ -397,10 +390,8 @@ static void __tnode_free_rcu(struct rcu_head *head) | |||
397 | 390 | ||
398 | if (size <= PAGE_SIZE) | 391 | if (size <= PAGE_SIZE) |
399 | kfree(tn); | 392 | kfree(tn); |
400 | else { | 393 | else |
401 | INIT_WORK(&tn->work, __tnode_vfree); | 394 | vfree(tn); |
402 | schedule_work(&tn->work); | ||
403 | } | ||
404 | } | 395 | } |
405 | 396 | ||
406 | static inline void tnode_free(struct tnode *tn) | 397 | static inline void tnode_free(struct tnode *tn) |