summaryrefslogtreecommitdiff
path: root/net/sched/sch_generic.c
diff options
context:
space:
mode:
authorThomas Graf <tgraf@suug.ch>2005-08-23 10:12:44 -0700
committerDavid S. Miller <davem@davemloft.net>2005-08-23 10:12:44 -0700
commit0fbbeb1ba43bd04f0f1d4f161b7f72437a1c8a03 (patch)
tree80aff375f2b1de10a69743d73977df39f356dda5 /net/sched/sch_generic.c
parentd2287f844187158e5eddd0d5de8e95bd607abcb7 (diff)
downloadlwn-0fbbeb1ba43bd04f0f1d4f161b7f72437a1c8a03.tar.gz
lwn-0fbbeb1ba43bd04f0f1d4f161b7f72437a1c8a03.zip
[PKT_SCHED]: Fix missing qdisc_destroy() in qdisc_create_dflt()
qdisc_create_dflt() is missing to destroy the newly allocated default qdisc if the initialization fails resulting in leaks of all kinds. The only caller in mainline which may trigger this bug is sch_tbf.c in tbf_create_dflt_qdisc(). Note: qdisc_create_dflt() doesn't fulfill the official locking requirements of qdisc_destroy() but since the qdisc could never be seen by the outside world this doesn't matter and it can stay as-is until the locking of pkt_sched is cleaned up. Signed-off-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_generic.c')
-rw-r--r--net/sched/sch_generic.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 8edefd5d095d..0d066c965342 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -438,6 +438,7 @@ struct Qdisc * qdisc_create_dflt(struct net_device *dev, struct Qdisc_ops *ops)
if (!ops->init || ops->init(sch, NULL) == 0)
return sch;
+ qdisc_destroy(sch);
errout:
return NULL;
}