mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 07:01:32 +00:00
netfilter: Add the missed return value check of register_netdevice_notifier
There are some codes of netfilter module which did not check the return value of register_netdevice_notifier. Add the checks now. Signed-off-by: Gao Feng <fgao@ikuai8.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
cf71c03edf
commit
4e6577de71
@ -151,12 +151,20 @@ static int __init nf_tables_netdev_init(void)
|
||||
|
||||
nft_register_chain_type(&nft_filter_chain_netdev);
|
||||
ret = register_pernet_subsys(&nf_tables_netdev_net_ops);
|
||||
if (ret < 0) {
|
||||
nft_unregister_chain_type(&nft_filter_chain_netdev);
|
||||
return ret;
|
||||
}
|
||||
register_netdevice_notifier(&nf_tables_netdev_notifier);
|
||||
if (ret)
|
||||
goto err1;
|
||||
|
||||
ret = register_netdevice_notifier(&nf_tables_netdev_notifier);
|
||||
if (ret)
|
||||
goto err2;
|
||||
|
||||
return 0;
|
||||
|
||||
err2:
|
||||
unregister_pernet_subsys(&nf_tables_netdev_net_ops);
|
||||
err1:
|
||||
nft_unregister_chain_type(&nft_filter_chain_netdev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void __exit nf_tables_netdev_exit(void)
|
||||
|
@ -1522,9 +1522,16 @@ static int __init nfnetlink_queue_init(void)
|
||||
goto cleanup_netlink_notifier;
|
||||
}
|
||||
|
||||
register_netdevice_notifier(&nfqnl_dev_notifier);
|
||||
status = register_netdevice_notifier(&nfqnl_dev_notifier);
|
||||
if (status < 0) {
|
||||
pr_err("nf_queue: failed to register netdevice notifier\n");
|
||||
goto cleanup_netlink_subsys;
|
||||
}
|
||||
|
||||
return status;
|
||||
|
||||
cleanup_netlink_subsys:
|
||||
nfnetlink_subsys_unregister(&nfqnl_subsys);
|
||||
cleanup_netlink_notifier:
|
||||
netlink_unregister_notifier(&nfqnl_rtnl_notifier);
|
||||
unregister_pernet_subsys(&nfnl_queue_net_ops);
|
||||
|
@ -89,6 +89,8 @@ static int tee_tg_check(const struct xt_tgchk_param *par)
|
||||
return -EINVAL;
|
||||
|
||||
if (info->oif[0]) {
|
||||
int ret;
|
||||
|
||||
if (info->oif[sizeof(info->oif)-1] != '\0')
|
||||
return -EINVAL;
|
||||
|
||||
@ -101,7 +103,11 @@ static int tee_tg_check(const struct xt_tgchk_param *par)
|
||||
priv->notifier.notifier_call = tee_netdev_event;
|
||||
info->priv = priv;
|
||||
|
||||
register_netdevice_notifier(&priv->notifier);
|
||||
ret = register_netdevice_notifier(&priv->notifier);
|
||||
if (ret) {
|
||||
kfree(priv);
|
||||
return ret;
|
||||
}
|
||||
} else
|
||||
info->priv = NULL;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user