aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/sch_mqprio.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sched/sch_mqprio.c')
-rw-r--r--net/sched/sch_mqprio.c10
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;