diff options
Diffstat (limited to 'net/sched/sch_api.c')
-rw-r--r-- | net/sched/sch_api.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index cd81505662b8..a07d55e75698 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c | |||
@@ -135,7 +135,7 @@ static DEFINE_RWLOCK(qdisc_mod_lock); | |||
135 | 135 | ||
136 | static struct Qdisc_ops *qdisc_base; | 136 | static struct Qdisc_ops *qdisc_base; |
137 | 137 | ||
138 | /* Register/uregister queueing discipline */ | 138 | /* Register/unregister queueing discipline */ |
139 | 139 | ||
140 | int register_qdisc(struct Qdisc_ops *qops) | 140 | int register_qdisc(struct Qdisc_ops *qops) |
141 | { | 141 | { |
@@ -271,11 +271,16 @@ static struct Qdisc *qdisc_match_from_root(struct Qdisc *root, u32 handle) | |||
271 | return NULL; | 271 | return NULL; |
272 | } | 272 | } |
273 | 273 | ||
274 | static void qdisc_list_add(struct Qdisc *q) | 274 | void qdisc_list_add(struct Qdisc *q) |
275 | { | 275 | { |
276 | if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) | 276 | if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) { |
277 | list_add_tail(&q->list, &qdisc_dev(q)->qdisc->list); | 277 | struct Qdisc *root = qdisc_dev(q)->qdisc; |
278 | |||
279 | WARN_ON_ONCE(root == &noop_qdisc); | ||
280 | list_add_tail(&q->list, &root->list); | ||
281 | } | ||
278 | } | 282 | } |
283 | EXPORT_SYMBOL(qdisc_list_add); | ||
279 | 284 | ||
280 | void qdisc_list_del(struct Qdisc *q) | 285 | void qdisc_list_del(struct Qdisc *q) |
281 | { | 286 | { |