summaryrefslogtreecommitdiffstats
path: root/net/sched
diff options
context:
space:
mode:
authorBen Hutchings <bhutchings@solarflare.com>2011-02-14 20:02:23 +0100
committerBen Hutchings <bhutchings@solarflare.com>2011-02-14 20:07:58 +0100
commitac7100ba93428a26cde8e47dfcfcfbfbfcce66de (patch)
tree1750fd2e7dc4b48748fe59d7737f460185ad5990 /net/sched
parentMerge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/ne... (diff)
downloadlinux-ac7100ba93428a26cde8e47dfcfcfbfbfcce66de.tar.xz
linux-ac7100ba93428a26cde8e47dfcfcfbfbfcce66de.zip
sch_mqprio: Always set num_tc to 0 in mqprio_destroy()
All the cleanup code in mqprio_destroy() is currently conditional on priv->qdiscs being non-null, but that condition should only apply to the per-queue qdisc cleanup. We should always set the number of traffic classes back to 0 here. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Diffstat (limited to 'net/sched')
-rw-r--r--net/sched/sch_mqprio.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/net/sched/sch_mqprio.c b/net/sched/sch_mqprio.c
index effd4ee0e880..ace37f9f1cd0 100644
--- a/net/sched/sch_mqprio.c
+++ b/net/sched/sch_mqprio.c
@@ -29,18 +29,18 @@ static void mqprio_destroy(struct Qdisc *sch)
struct mqprio_sched *priv = qdisc_priv(sch);
unsigned int ntx;
- if (!priv->qdiscs)
- return;
-
- for (ntx = 0; ntx < dev->num_tx_queues && priv->qdiscs[ntx]; ntx++)
- qdisc_destroy(priv->qdiscs[ntx]);
+ if (priv->qdiscs) {
+ for (ntx = 0;
+ ntx < dev->num_tx_queues && priv->qdiscs[ntx];
+ ntx++)
+ qdisc_destroy(priv->qdiscs[ntx]);
+ kfree(priv->qdiscs);
+ }
if (priv->hw_owned && dev->netdev_ops->ndo_setup_tc)
dev->netdev_ops->ndo_setup_tc(dev, 0);
else
netdev_set_num_tc(dev, 0);
-
- kfree(priv->qdiscs);
}
static int mqprio_parse_opt(struct net_device *dev, struct tc_mqprio_qopt *qopt)