Commit 26eebdc4 authored by Kuniyuki Iwashima's avatar Kuniyuki Iwashima Committed by Paolo Abeni
Browse files

rtnetlink: Return int from rtnl_af_register().



The next patch will add init_srcu_struct() in rtnl_af_register(),
then we need to handle its error.

Let's add the error handling in advance to make the following
patch cleaner.

Signed-off-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
Reviewed-by: default avatarMatt Johnston <matt@codeconstruct.com.au>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent a0b63c64
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -204,7 +204,7 @@ struct rtnl_af_ops {
	size_t			(*get_stats_af_size)(const struct net_device *dev);
};

void rtnl_af_register(struct rtnl_af_ops *ops);
int rtnl_af_register(struct rtnl_af_ops *ops);
void rtnl_af_unregister(struct rtnl_af_ops *ops);

struct net *rtnl_link_get_net(struct net *src_net, struct nlattr *tb[]);
+5 −1
Original line number Diff line number Diff line
@@ -1924,7 +1924,9 @@ int __init br_netlink_init(void)
	if (err)
		goto out;

	rtnl_af_register(&br_af_ops);
	err = rtnl_af_register(&br_af_ops);
	if (err)
		goto out_vlan;

	err = rtnl_link_register(&br_link_ops);
	if (err)
@@ -1934,6 +1936,8 @@ int __init br_netlink_init(void)

out_af:
	rtnl_af_unregister(&br_af_ops);
out_vlan:
	br_vlan_rtnl_uninit();
out:
	return err;
}
+3 −1
Original line number Diff line number Diff line
@@ -686,11 +686,13 @@ static const struct rtnl_af_ops *rtnl_af_lookup(const int family)
 *
 * Returns 0 on success or a negative error code.
 */
void rtnl_af_register(struct rtnl_af_ops *ops)
int rtnl_af_register(struct rtnl_af_ops *ops)
{
	rtnl_lock();
	list_add_tail_rcu(&ops->list, &rtnl_af_ops);
	rtnl_unlock();

	return 0;
}
EXPORT_SYMBOL_GPL(rtnl_af_register);

+2 −1
Original line number Diff line number Diff line
@@ -2827,7 +2827,8 @@ void __init devinet_init(void)
	register_pernet_subsys(&devinet_ops);
	register_netdevice_notifier(&ip_netdev_notifier);

	rtnl_af_register(&inet_af_ops);
	if (rtnl_af_register(&inet_af_ops))
		panic("Unable to register inet_af_ops\n");

	rtnl_register_many(devinet_rtnl_msg_handlers);
}
+4 −1
Original line number Diff line number Diff line
@@ -7468,7 +7468,9 @@ int __init addrconf_init(void)

	addrconf_verify(&init_net);

	rtnl_af_register(&inet6_ops);
	err = rtnl_af_register(&inet6_ops);
	if (err)
		goto erraf;

	err = rtnl_register_many(addrconf_rtnl_msg_handlers);
	if (err)
@@ -7482,6 +7484,7 @@ int __init addrconf_init(void)
errout:
	rtnl_unregister_all(PF_INET6);
	rtnl_af_unregister(&inet6_ops);
erraf:
	unregister_netdevice_notifier(&ipv6_dev_notf);
errlo:
	destroy_workqueue(addrconf_wq);
Loading