relax ip_conntrack_[nat_]proto_find_get checkings
Subsystems (2)
Pablo Neira
maintainerPATCH 1/1 relax ip_conntrack_[nat_]proto_find_get checkings
Remove proto == NULL checking since ip_conntrack_[nat_]proto_find_get always returns a valid pointer. Fix missing ip_conntrack_proto_put in some paths as well.
Signed-off-by Pablo Neira Ayuso <[email protected]>
Signature · 2 lines
The dawn of the fourth age of Linux firewalling is coming; a time of great struggle and heroic deeds -- J.Kadlecsik got inspired by J.Morris
Remove proto == NULL checking since ip_conntrack_[nat_]proto_find_get always returns a valid pointer. Fix missing ip_conntrack_proto_put in some paths.
Signed-off-by Pablo Neira Ayuso <[email protected]>
net/ipv4/netfilter/ip_conntrack_netlink.c +12 -12
@@ -59,11 +59,13 @@ ctnetlink_dump_tuples_proto(struct sk_buNFA_PUT (skb,CTA_PROTO_NUM ,sizeof (u_int8_t), &tuple->dst.protonum); +/* If no protocol helper is found, this function will return the +* generic protocol helper, so proto won't *ever* be NULL */ proto =ip_conntrack_proto_find_get (tuple->dst.protonum); -if (likely (proto && proto->tuple_to_nfattr)) { +if (likely (proto->tuple_to_nfattr)) ret = proto->tuple_to_nfattr (skb, tuple); -ip_conntrack_proto_put (proto); - } + +ip_conntrack_proto_put (proto);return ret;
@@ -128,9 +130,11 @@ ctnetlink_dump_protoinfo(struct sk_buffstruct nfattr *nest_proto;int ret; - -if (!proto || !proto->to_nfattr) + +if (!proto->to_nfattr) { +ip_conntrack_proto_put (proto);return 0 ; + } nest_proto =NFA_NEST (skb,CTA_PROTOINFO );
@@ -527,10 +531,10 @@ ctnetlink_parse_tuple_proto(struct nfatt proto =ip_conntrack_proto_find_get (tuple->dst.protonum); -if (likely (proto && proto->nfattr_to_tuple)) { +if (likely (proto->nfattr_to_tuple)) ret = proto->nfattr_to_tuple (tb, tuple); -ip_conntrack_proto_put (proto); - } + +ip_conntrack_proto_put (proto);return ret; }
@@ -596,8 +600,6 @@ static int ctnetlink_parse_nat_proto(strreturn -EINVAL ; npt =ip_nat_proto_find_get (ct->tuplehash[IP_CT_DIR_ORIGINAL ].tuple.dst.protonum); -if (!npt) -return 0 ;if (!npt->nfattr_to_range) {ip_nat_proto_put (npt);
@@ -957,8 +959,6 @@ ctnetlink_change_protoinfo(struct ip_connfattr_parse_nested (tb,CTA_PROTOINFO_MAX , attr); proto =ip_conntrack_proto_find_get (npt); -if (!proto) -return -EINVAL ;if (proto->from_nfattr) err = proto->from_nfattr (tb, ct);
Harald Welte
AppliedQuoted 3 lines · Pablo Neira
Remove proto == NULL checking since ip_conntrack_[nat_]proto_find_get always returns a valid pointer. Fix missing
ip_conntrack_proto_putin some paths as well.
thanks, applied and submitted.
Signature · 5 lines
- Harald Welte <[email protected]> http://netfilter.org/ ============================================================================ "Fragmentation is like classful addressing -- an interesting early architectural error that shows how much experimentation was going on while IP was being designed." -- Paul Vixie