Commit 660f706d authored by remi.denis-courmont@nokia's avatar remi.denis-courmont@nokia Committed by David S. Miller

Phonet: handle rtnetlink registration failure

Signed-off-by: default avatarRémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 76e02cf6
...@@ -38,7 +38,7 @@ struct phonet_device { ...@@ -38,7 +38,7 @@ struct phonet_device {
int phonet_device_init(void); int phonet_device_init(void);
void phonet_device_exit(void); void phonet_device_exit(void);
void phonet_netlink_register(void); int phonet_netlink_register(void);
struct net_device *phonet_device_get(struct net *net); struct net_device *phonet_device_get(struct net *net);
int phonet_address_add(struct net_device *dev, u8 addr); int phonet_address_add(struct net_device *dev, u8 addr);
......
...@@ -190,9 +190,13 @@ static struct notifier_block phonet_device_notifier = { ...@@ -190,9 +190,13 @@ static struct notifier_block phonet_device_notifier = {
/* Initialize Phonet devices list */ /* Initialize Phonet devices list */
int __init phonet_device_init(void) int __init phonet_device_init(void)
{ {
int err;
register_netdevice_notifier(&phonet_device_notifier); register_netdevice_notifier(&phonet_device_notifier);
phonet_netlink_register(); err = phonet_netlink_register();
return 0; if (err)
phonet_device_exit();
return err;
} }
void phonet_device_exit(void) void phonet_device_exit(void)
......
...@@ -160,9 +160,14 @@ static int getaddr_dumpit(struct sk_buff *skb, struct netlink_callback *cb) ...@@ -160,9 +160,14 @@ static int getaddr_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
return skb->len; return skb->len;
} }
void __init phonet_netlink_register(void) int __init phonet_netlink_register(void)
{ {
rtnl_register(PF_PHONET, RTM_NEWADDR, addr_doit, NULL); int err = __rtnl_register(PF_PHONET, RTM_NEWADDR, addr_doit, NULL);
rtnl_register(PF_PHONET, RTM_DELADDR, addr_doit, NULL); if (err)
rtnl_register(PF_PHONET, RTM_GETADDR, NULL, getaddr_dumpit); return err;
/* Further __rtnl_register() cannot fail */
__rtnl_register(PF_PHONET, RTM_DELADDR, addr_doit, NULL);
__rtnl_register(PF_PHONET, RTM_GETADDR, NULL, getaddr_dumpit);
return 0;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment