# This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/10/03 20:25:10+02:00 kaber@coreworks.de # [NET_SCHED]: Fix module leak in tc_ctl_tfilter error path # # Signed-off-by: Patrick McHardy # # net/sched/cls_api.c # 2004/10/03 20:24:47+02:00 kaber@coreworks.de +6 -2 # [NET_SCHED]: Fix module leak in tc_ctl_tfilter error path # # Signed-off-by: Patrick McHardy # 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; }