netdev
[Top] [All Lists]

[PATCH 2.6 1/7]: Fix module leak in tc_ctl_tfilter error path

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>
  • [PATCH 2.6 1/7]: Fix module leak in tc_ctl_tfilter error path, Patrick McHardy <=