Skip to content

Commit

Permalink
Phonet: handle rtnetlink registration failure
Browse files Browse the repository at this point in the history
Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
remi.denis-courmont@nokia authored and David S. Miller committed Jan 27, 2009
1 parent 76e02cf commit 660f706
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 7 deletions.
2 changes: 1 addition & 1 deletion include/net/phonet/pn_dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ struct phonet_device {

int phonet_device_init(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);

int phonet_address_add(struct net_device *dev, u8 addr);
Expand Down
8 changes: 6 additions & 2 deletions net/phonet/pn_dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -190,9 +190,13 @@ static struct notifier_block phonet_device_notifier = {
/* Initialize Phonet devices list */
int __init phonet_device_init(void)
{
int err;

register_netdevice_notifier(&phonet_device_notifier);
phonet_netlink_register();
return 0;
err = phonet_netlink_register();
if (err)
phonet_device_exit();
return err;
}

void phonet_device_exit(void)
Expand Down
13 changes: 9 additions & 4 deletions net/phonet/pn_netlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,14 @@ static int getaddr_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
return skb->len;
}

void __init phonet_netlink_register(void)
int __init phonet_netlink_register(void)
{
rtnl_register(PF_PHONET, RTM_NEWADDR, addr_doit, NULL);
rtnl_register(PF_PHONET, RTM_DELADDR, addr_doit, NULL);
rtnl_register(PF_PHONET, RTM_GETADDR, NULL, getaddr_dumpit);
int err = __rtnl_register(PF_PHONET, RTM_NEWADDR, addr_doit, NULL);
if (err)
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;
}

0 comments on commit 660f706

Please sign in to comment.