[NETFILTER] refcount leak of proto when ctnetlink dumping tuple Signed-off-by: Yasuyuki Kozakai --- commit 3a4486b6419a1f25324bb4280d51f5c77b1117f7 tree 88b1831d06e21417baca01d1632131d96e3be611 parent 61a002f080c6473da94f28314502ff0f15fe3625 author Yasuyuki Kozakai Fri, 04 Nov 2005 14:35:27 +0900 committer Yasuyuki Kozakai Fri, 04 Nov 2005 14:35:27 +0900 net/ipv4/netfilter/ip_conntrack_netlink.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/net/ipv4/netfilter/ip_conntrack_netlink.c b/net/ipv4/netfilter/ip_conntrack_netlink.c --- a/net/ipv4/netfilter/ip_conntrack_netlink.c +++ b/net/ipv4/netfilter/ip_conntrack_netlink.c @@ -58,14 +58,17 @@ ctnetlink_dump_tuples_proto(struct sk_bu 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;