diff options
Diffstat (limited to 'net/sched/sch_api.c')
| -rw-r--r-- | net/sched/sch_api.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index cd81505662b8..1313145e3b86 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c @@ -135,7 +135,7 @@ static DEFINE_RWLOCK(qdisc_mod_lock);  static struct Qdisc_ops *qdisc_base; -/* Register/uregister queueing discipline */ +/* Register/unregister queueing discipline */  int register_qdisc(struct Qdisc_ops *qops)  { @@ -271,11 +271,15 @@ static struct Qdisc *qdisc_match_from_root(struct Qdisc *root, u32 handle)  	return NULL;  } -static void qdisc_list_add(struct Qdisc *q) +void qdisc_list_add(struct Qdisc *q)  { +	struct Qdisc *root = qdisc_dev(q)->qdisc; + +	WARN_ON_ONCE(root == &noop_qdisc);  	if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) -		list_add_tail(&q->list, &qdisc_dev(q)->qdisc->list); +		list_add_tail(&q->list, &root->list);  } +EXPORT_SYMBOL(qdisc_list_add);  void qdisc_list_del(struct Qdisc *q)  {  | 
