Phonet: handle rtnetlink registration failure
Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
76e02cf694
commit
660f706d93
|
@ -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 = {
|
||||||
/* 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 @@ out:
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue