diff options
Diffstat (limited to 'net/sched/act_police.c')
-rw-r--r-- | net/sched/act_police.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/net/sched/act_police.c b/net/sched/act_police.c index 8a1630774fd6..b3b9b32f4e00 100644 --- a/net/sched/act_police.c +++ b/net/sched/act_police.c | |||
@@ -96,11 +96,6 @@ nla_put_failure: | |||
96 | goto done; | 96 | goto done; |
97 | } | 97 | } |
98 | 98 | ||
99 | static void tcf_police_free_rcu(struct rcu_head *head) | ||
100 | { | ||
101 | kfree(container_of(head, struct tcf_police, tcf_rcu)); | ||
102 | } | ||
103 | |||
104 | static void tcf_police_destroy(struct tcf_police *p) | 99 | static void tcf_police_destroy(struct tcf_police *p) |
105 | { | 100 | { |
106 | unsigned int h = tcf_hash(p->tcf_index, POL_TAB_MASK); | 101 | unsigned int h = tcf_hash(p->tcf_index, POL_TAB_MASK); |
@@ -121,7 +116,7 @@ static void tcf_police_destroy(struct tcf_police *p) | |||
121 | * gen_estimator est_timer() might access p->tcf_lock | 116 | * gen_estimator est_timer() might access p->tcf_lock |
122 | * or bstats, wait a RCU grace period before freeing p | 117 | * or bstats, wait a RCU grace period before freeing p |
123 | */ | 118 | */ |
124 | call_rcu(&p->tcf_rcu, tcf_police_free_rcu); | 119 | kfree_rcu(p, tcf_rcu); |
125 | return; | 120 | return; |
126 | } | 121 | } |
127 | } | 122 | } |
@@ -401,7 +396,6 @@ static void __exit | |||
401 | police_cleanup_module(void) | 396 | police_cleanup_module(void) |
402 | { | 397 | { |
403 | tcf_unregister_action(&act_police_ops); | 398 | tcf_unregister_action(&act_police_ops); |
404 | rcu_barrier(); /* Wait for completion of call_rcu()'s (tcf_police_free_rcu) */ | ||
405 | } | 399 | } |
406 | 400 | ||
407 | module_init(police_init_module); | 401 | module_init(police_init_module); |