mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
net_sched: no need to free qdisc in RCU callback
gen estimator has been rewritten in commit 1c0d32fde5
("net_sched: gen_estimator: complete rewrite of rate estimators"),
the caller no longer needs to wait for a grace period. So this
patch gets rid of it.
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: Eric Dumazet <edumazet@google.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bd7d2106b6
commit
752fbcc334
@ -93,7 +93,6 @@ struct Qdisc {
|
||||
unsigned long state;
|
||||
struct Qdisc *next_sched;
|
||||
struct sk_buff *skb_bad_txq;
|
||||
struct rcu_head rcu_head;
|
||||
int padded;
|
||||
refcount_t refcnt;
|
||||
|
||||
|
@ -688,10 +688,8 @@ void qdisc_reset(struct Qdisc *qdisc)
|
||||
}
|
||||
EXPORT_SYMBOL(qdisc_reset);
|
||||
|
||||
static void qdisc_rcu_free(struct rcu_head *head)
|
||||
static void qdisc_free(struct Qdisc *qdisc)
|
||||
{
|
||||
struct Qdisc *qdisc = container_of(head, struct Qdisc, rcu_head);
|
||||
|
||||
if (qdisc_is_percpu_stats(qdisc)) {
|
||||
free_percpu(qdisc->cpu_bstats);
|
||||
free_percpu(qdisc->cpu_qstats);
|
||||
@ -724,11 +722,7 @@ void qdisc_destroy(struct Qdisc *qdisc)
|
||||
|
||||
kfree_skb_list(qdisc->gso_skb);
|
||||
kfree_skb(qdisc->skb_bad_txq);
|
||||
/*
|
||||
* gen_estimator est_timer() might access qdisc->q.lock,
|
||||
* wait a RCU grace period before freeing qdisc.
|
||||
*/
|
||||
call_rcu(&qdisc->rcu_head, qdisc_rcu_free);
|
||||
qdisc_free(qdisc);
|
||||
}
|
||||
EXPORT_SYMBOL(qdisc_destroy);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user