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>
        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)