Skip to content

Commit

Permalink
netfilter: Add the missed return value check of nft_register_chain_type
Browse files Browse the repository at this point in the history
There are some codes of netfilter module which did not check the return
value of nft_register_chain_type. Add the checks now.

Signed-off-by: Gao Feng <fgao@ikuai8.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  • Loading branch information
Gao Feng authored and Pablo Neira Ayuso committed Sep 12, 2016
1 parent 4e6577d commit 23d0750
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 10 deletions.
18 changes: 13 additions & 5 deletions net/bridge/netfilter/nf_tables_bridge.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,12 +139,20 @@ static int __init nf_tables_bridge_init(void)
int ret;

nf_register_afinfo(&nf_br_afinfo);
nft_register_chain_type(&filter_bridge);
ret = nft_register_chain_type(&filter_bridge);
if (ret < 0)
goto err1;

ret = register_pernet_subsys(&nf_tables_bridge_net_ops);
if (ret < 0) {
nft_unregister_chain_type(&filter_bridge);
nf_unregister_afinfo(&nf_br_afinfo);
}
if (ret < 0)
goto err2;

return ret;

err2:
nft_unregister_chain_type(&filter_bridge);
err1:
nf_unregister_afinfo(&nf_br_afinfo);
return ret;
}

Expand Down
5 changes: 4 additions & 1 deletion net/ipv4/netfilter/nf_tables_arp.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,10 @@ static int __init nf_tables_arp_init(void)
{
int ret;

nft_register_chain_type(&filter_arp);
ret = nft_register_chain_type(&filter_arp);
if (ret < 0)
return ret;

ret = register_pernet_subsys(&nf_tables_arp_net_ops);
if (ret < 0)
nft_unregister_chain_type(&filter_arp);
Expand Down
5 changes: 4 additions & 1 deletion net/ipv4/netfilter/nf_tables_ipv4.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,10 @@ static int __init nf_tables_ipv4_init(void)
{
int ret;

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

ret = register_pernet_subsys(&nf_tables_ipv4_net_ops);
if (ret < 0)
nft_unregister_chain_type(&filter_ipv4);
Expand Down
5 changes: 4 additions & 1 deletion net/ipv6/netfilter/nf_tables_ipv6.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,10 @@ static int __init nf_tables_ipv6_init(void)
{
int ret;

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

ret = register_pernet_subsys(&nf_tables_ipv6_net_ops);
if (ret < 0)
nft_unregister_chain_type(&filter_ipv6);
Expand Down
5 changes: 4 additions & 1 deletion net/netfilter/nf_tables_inet.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,10 @@ static int __init nf_tables_inet_init(void)
{
int ret;

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

ret = register_pernet_subsys(&nf_tables_inet_net_ops);
if (ret < 0)
nft_unregister_chain_type(&filter_inet);
Expand Down
5 changes: 4 additions & 1 deletion net/netfilter/nf_tables_netdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,10 @@ static int __init nf_tables_netdev_init(void)
{
int ret;

nft_register_chain_type(&nft_filter_chain_netdev);
ret = nft_register_chain_type(&nft_filter_chain_netdev);
if (ret)
return ret;

ret = register_pernet_subsys(&nf_tables_netdev_net_ops);
if (ret)
goto err1;
Expand Down

0 comments on commit 23d0750

Please sign in to comment.