Skip to content

Commit

Permalink
netfilter: nf_conntrack: fix memory leak if sysctl registration fails
Browse files Browse the repository at this point in the history
In nf_ct_l4proto_register_sysctl, if l4proto sysctl registration
fails, we have to make sure that we release the compat sysctl
table.

This can happen if TCP has been registered compat for IPv4, and
IPv6 compat registration fails.

Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  • Loading branch information
Gao feng authored and Pablo Neira Ayuso committed Jun 27, 2012
1 parent fa34fff commit 12c26df
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions net/netfilter/nf_conntrack_proto.c
Original file line number Diff line number Diff line change
Expand Up @@ -341,11 +341,14 @@ int nf_ct_l4proto_register_sysctl(struct net *net,
kfree(pn->ctl_table);
pn->ctl_table = NULL;
}
goto out;
}
}
#ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT
if (l4proto->l3proto != AF_INET6 && pn->ctl_compat_table != NULL) {
if (err < 0) {
nf_ct_kfree_compat_sysctl_table(pn);
goto out;
}
err = nf_ct_register_sysctl(net,
&pn->ctl_compat_header,
"net/ipv4/netfilter",
Expand All @@ -358,8 +361,8 @@ int nf_ct_l4proto_register_sysctl(struct net *net,
&pn->ctl_table,
pn->users);
}
#endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */
out:
#endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */
#endif /* CONFIG_SYSCTL */
return err;
}
Expand Down

0 comments on commit 12c26df

Please sign in to comment.