qdisc: exit case fixes for skb list handling in qdisc layer
authorJesper Dangaard Brouer <brouer@redhat.com>
Wed, 3 Sep 2014 10:12:50 +0000 (12:12 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 4 Sep 2014 03:41:42 +0000 (20:41 -0700)
More minor fixes to merge commit 53fda7f7f9e (Merge branch 'xmit_list')
that allows us to work with a list of SKBs.

Fixing exit cases in qdisc_reset() and qdisc_destroy(), where a
leftover requeued SKB (qdisc->gso_skb) can have the potential of
being a skb list, thus use kfree_skb_list().

This is a followup to commit 10770bc2d1 ("qdisc: adjustments for
API allowing skb list xmits").

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_generic.c

index 5b261e91bdbdef1e71b60348f31cedad6380740e..19696ebe9ebc897379b6b9826e339f8ab10ddbc8 100644 (file)
@@ -621,7 +621,7 @@ void qdisc_reset(struct Qdisc *qdisc)
                ops->reset(qdisc);
 
        if (qdisc->gso_skb) {
-               kfree_skb(qdisc->gso_skb);
+               kfree_skb_list(qdisc->gso_skb);
                qdisc->gso_skb = NULL;
                qdisc->q.qlen = 0;
        }
@@ -657,7 +657,7 @@ void qdisc_destroy(struct Qdisc *qdisc)
        module_put(ops->owner);
        dev_put(qdisc_dev(qdisc));
 
-       kfree_skb(qdisc->gso_skb);
+       kfree_skb_list(qdisc->gso_skb);
        /*
         * gen_estimator est_timer() might access qdisc->q.lock,
         * wait a RCU grace period before freeing qdisc.