diff options
author | Jarek Poplawski <jarkao2@gmail.com> | 2008-11-03 05:52:50 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-03 05:52:50 -0500 |
commit | 67305ebc992abf2121fb2149fd8a707cd7cfcbd2 (patch) | |
tree | 4d6972424550db5ff5f42290f81c29a31e1fda49 /net/sched/sch_generic.c | |
parent | 5799de0b12c773874282444052da401989075df6 (diff) |
pkt_sched: sch_generic: Kfree gso_skb in qdisc_reset()
Since gso_skb is re-used for qdisc_peek_dequeued(), and this skb is
counted in the qdisc->q.qlen, it has to be kfreed during qdisc_reset()
when qlen is zeroed.
With help from David S. Miller <davem@davemloft.net>
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_generic.c')
-rw-r--r-- | net/sched/sch_generic.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 318c9f656e8e..1192da229835 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c | |||
@@ -542,6 +542,9 @@ void qdisc_reset(struct Qdisc *qdisc) | |||
542 | 542 | ||
543 | if (ops->reset) | 543 | if (ops->reset) |
544 | ops->reset(qdisc); | 544 | ops->reset(qdisc); |
545 | |||
546 | kfree_skb(qdisc->gso_skb); | ||
547 | qdisc->gso_skb = NULL; | ||
545 | } | 548 | } |
546 | EXPORT_SYMBOL(qdisc_reset); | 549 | EXPORT_SYMBOL(qdisc_reset); |
547 | 550 | ||