return err;
 }
 
+static const struct rtnl_msg_handler phonet_rtnl_msg_handlers[] __initdata_or_module = {
+       {THIS_MODULE, PF_PHONET, RTM_NEWADDR, addr_doit, NULL, 0},
+       {THIS_MODULE, PF_PHONET, RTM_DELADDR, addr_doit, NULL, 0},
+       {THIS_MODULE, PF_PHONET, RTM_GETADDR, NULL, getaddr_dumpit, 0},
+       {THIS_MODULE, PF_PHONET, RTM_NEWROUTE, route_doit, NULL, 0},
+       {THIS_MODULE, PF_PHONET, RTM_DELROUTE, route_doit, NULL, 0},
+       {THIS_MODULE, PF_PHONET, RTM_GETROUTE, NULL, route_dumpit,
+        RTNL_FLAG_DUMP_UNLOCKED},
+};
+
 int __init phonet_netlink_register(void)
 {
-       int err = rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_NEWADDR,
-                                      addr_doit, NULL, 0);
-       if (err)
-               return err;
-
-       /* Further rtnl_register_module() cannot fail */
-       rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_DELADDR,
-                            addr_doit, NULL, 0);
-       rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_GETADDR,
-                            NULL, getaddr_dumpit, 0);
-       rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_NEWROUTE,
-                            route_doit, NULL, 0);
-       rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_DELROUTE,
-                            route_doit, NULL, 0);
-       rtnl_register_module(THIS_MODULE, PF_PHONET, RTM_GETROUTE,
-                            NULL, route_dumpit, RTNL_FLAG_DUMP_UNLOCKED);
-       return 0;
+       return rtnl_register_many(phonet_rtnl_msg_handlers);
 }