| To: | "David S. Miller" <davem@xxxxxxxxxx> |
|---|---|
| Subject: | [PATCH 2.6 1/7]: Fix module leak in tc_ctl_tfilter error path |
| From: | Patrick McHardy <kaber@xxxxxxxxx> |
| Date: | Sun, 03 Oct 2004 23:12:48 +0200 |
| Cc: | netdev@xxxxxxxxxxx |
| Sender: | netdev-bounce@xxxxxxxxxxx |
| User-agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040413 Debian/1.6-5 |
When tp_ops->init fails we leak a module reference. # This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
# 2004/10/03 20:25:10+02:00 kaber@xxxxxxxxxxxx
# [NET_SCHED]: Fix module leak in tc_ctl_tfilter error path
#
# Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
#
# net/sched/cls_api.c
# 2004/10/03 20:24:47+02:00 kaber@xxxxxxxxxxxx +6 -2
# [NET_SCHED]: Fix module leak in tc_ctl_tfilter error path
#
# Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
#
diff -Nru a/net/sched/cls_api.c b/net/sched/cls_api.c
--- a/net/sched/cls_api.c 2004-10-03 22:18:04 +02:00
+++ b/net/sched/cls_api.c 2004-10-03 22:18:04 +02:00
@@ -231,8 +231,12 @@
tp->classify = tp_ops->classify;
tp->classid = parent;
err = -EBUSY;
- if (!try_module_get(tp_ops->owner) ||
- (err = tp_ops->init(tp)) != 0) {
+ if (!try_module_get(tp_ops->owner)) {
+ kfree(tp);
+ goto errout;
+ }
+ if ((err = tp_ops->init(tp)) != 0) {
+ module_put(tp_ops->owner);
kfree(tp);
goto errout;
}
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | [PATCH 2.6 0/7]: assorted fixes, Patrick McHardy |
|---|---|
| Next by Date: | [PATCH 2.6 2/7]: Remove useless variable in tc_ctl_tfilter, Patrick McHardy |
| Previous by Thread: | [PATCH 2.6 0/7]: assorted fixes, Patrick McHardy |
| Next by Thread: | [PATCH 2.6 2/7]: Remove useless variable in tc_ctl_tfilter, Patrick McHardy |
| Indexes: | [Date] [Thread] [Top] [All Lists] |