void qdisc_reset(struct Qdisc *qdisc)
 {
        const struct Qdisc_ops *ops = qdisc->ops;
-       struct sk_buff *skb, *tmp;
 
        trace_qdisc_reset(qdisc);
 
        if (ops->reset)
                ops->reset(qdisc);
 
-       skb_queue_walk_safe(&qdisc->gso_skb, skb, tmp) {
-               __skb_unlink(skb, &qdisc->gso_skb);
-               kfree_skb_list(skb);
-       }
-
-       skb_queue_walk_safe(&qdisc->skb_bad_txq, skb, tmp) {
-               __skb_unlink(skb, &qdisc->skb_bad_txq);
-               kfree_skb_list(skb);
-       }
+       __skb_queue_purge(&qdisc->gso_skb);
+       __skb_queue_purge(&qdisc->skb_bad_txq);
 
        qdisc->q.qlen = 0;
        qdisc->qstats.backlog = 0;