[PATCH] refcount leak of proto when ctnetlink dumping tuple
authorYasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
Tue, 15 Nov 2005 12:32:36 +0000 (13:32 +0100)
committerChris Wright <chrisw@osdl.org>
Thu, 24 Nov 2005 22:10:09 +0000 (14:10 -0800)
Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
Signed-off-by: Harald Welte <laforge@netfilter.org>
Signed-off-by: Chris Wright <chrisw@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
net/ipv4/netfilter/ip_conntrack_netlink.c

index 166e6069f1212302c16c150fb267161af33ccc0d..97fab76c3a195accb8e7e2cce8c96bd32525ee45 100644 (file)
@@ -58,14 +58,17 @@ ctnetlink_dump_tuples_proto(struct sk_buff *skb,
                            const struct ip_conntrack_tuple *tuple)
 {
        struct ip_conntrack_protocol *proto;
+       int ret = 0;
 
        NFA_PUT(skb, CTA_PROTO_NUM, sizeof(u_int8_t), &tuple->dst.protonum);
 
        proto = ip_conntrack_proto_find_get(tuple->dst.protonum);
-       if (proto && proto->tuple_to_nfattr)
-               return proto->tuple_to_nfattr(skb, tuple);
+       if (likely(proto && proto->tuple_to_nfattr)) {
+               ret = proto->tuple_to_nfattr(skb, tuple);
+               ip_conntrack_proto_put(proto);
+       }
 
-       return 0;
+       return ret;
 
 nfattr_failure:
        return -1;