Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf4dfa85 authored by Pablo Neira Ayuso's avatar Pablo Neira Ayuso
Browse files

netfilter: nf_tables: fix error path in the init functions



We have to unregister chain type if this fails to register netns.

Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 3876d22d
Loading
Loading
Loading
Loading
+7 −1
Original line number Original line Diff line number Diff line
@@ -105,8 +105,14 @@ static const struct nf_chain_type filter_ipv4 = {


static int __init nf_tables_ipv4_init(void)
static int __init nf_tables_ipv4_init(void)
{
{
	int ret;

	nft_register_chain_type(&filter_ipv4);
	nft_register_chain_type(&filter_ipv4);
	return register_pernet_subsys(&nf_tables_ipv4_net_ops);
	ret = register_pernet_subsys(&nf_tables_ipv4_net_ops);
	if (ret < 0)
		nft_unregister_chain_type(&filter_ipv4);

	return ret;
}
}


static void __exit nf_tables_ipv4_exit(void)
static void __exit nf_tables_ipv4_exit(void)
+7 −1
Original line number Original line Diff line number Diff line
@@ -104,8 +104,14 @@ static const struct nf_chain_type filter_ipv6 = {


static int __init nf_tables_ipv6_init(void)
static int __init nf_tables_ipv6_init(void)
{
{
	int ret;

	nft_register_chain_type(&filter_ipv6);
	nft_register_chain_type(&filter_ipv6);
	return register_pernet_subsys(&nf_tables_ipv6_net_ops);
	ret = register_pernet_subsys(&nf_tables_ipv6_net_ops);
	if (ret < 0)
		nft_unregister_chain_type(&filter_ipv6);

	return ret;
}
}


static void __exit nf_tables_ipv6_exit(void)
static void __exit nf_tables_ipv6_exit(void)
+7 −1
Original line number Original line Diff line number Diff line
@@ -80,8 +80,14 @@ static const struct nf_chain_type filter_inet = {


static int __init nf_tables_inet_init(void)
static int __init nf_tables_inet_init(void)
{
{
	int ret;

	nft_register_chain_type(&filter_inet);
	nft_register_chain_type(&filter_inet);
	return register_pernet_subsys(&nf_tables_inet_net_ops);
	ret = register_pernet_subsys(&nf_tables_inet_net_ops);
	if (ret < 0)
		nft_unregister_chain_type(&filter_inet);

	return ret;
}
}


static void __exit nf_tables_inet_exit(void)
static void __exit nf_tables_inet_exit(void)