diff options
Diffstat (limited to 'net/sched/sch_mqprio.c')
-rw-r--r-- | net/sched/sch_mqprio.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/net/sched/sch_mqprio.c b/net/sched/sch_mqprio.c index d44c868cb537..6749e2f540d0 100644 --- a/net/sched/sch_mqprio.c +++ b/net/sched/sch_mqprio.c | |||
@@ -167,15 +167,17 @@ static void mqprio_attach(struct Qdisc *sch) | |||
167 | { | 167 | { |
168 | struct net_device *dev = qdisc_dev(sch); | 168 | struct net_device *dev = qdisc_dev(sch); |
169 | struct mqprio_sched *priv = qdisc_priv(sch); | 169 | struct mqprio_sched *priv = qdisc_priv(sch); |
170 | struct Qdisc *qdisc; | 170 | struct Qdisc *qdisc, *old; |
171 | unsigned int ntx; | 171 | unsigned int ntx; |
172 | 172 | ||
173 | /* Attach underlying qdisc */ | 173 | /* Attach underlying qdisc */ |
174 | for (ntx = 0; ntx < dev->num_tx_queues; ntx++) { | 174 | for (ntx = 0; ntx < dev->num_tx_queues; ntx++) { |
175 | qdisc = priv->qdiscs[ntx]; | 175 | qdisc = priv->qdiscs[ntx]; |
176 | qdisc = dev_graft_qdisc(qdisc->dev_queue, qdisc); | 176 | old = dev_graft_qdisc(qdisc->dev_queue, qdisc); |
177 | if (qdisc) | 177 | if (old) |
178 | qdisc_destroy(qdisc); | 178 | qdisc_destroy(old); |
179 | if (ntx < dev->real_num_tx_queues) | ||
180 | qdisc_list_add(qdisc); | ||
179 | } | 181 | } |
180 | kfree(priv->qdiscs); | 182 | kfree(priv->qdiscs); |
181 | priv->qdiscs = NULL; | 183 | priv->qdiscs = NULL; |