aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorremi.denis-courmont@nokia <remi.denis-courmont@nokia>2009-01-22 22:00:27 -0500
committerDavid S. Miller <davem@davemloft.net>2009-01-27 00:03:34 -0500
commit76e02cf6945e6faa9f6b546dc0513512197c5966 (patch)
treee296f93f6ba6571443704871bf2d399a3bc5b98e
parent4b8f704bea70a2c8719e47f53197678a87a0c62f (diff)
Phonet: allow phonet_device_init() to fail, put it to __init section
Signed-off-by: RĂ©mi Denis-Courmont <remi.denis-courmont@nokia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/phonet/phonet.h1
-rw-r--r--include/net/phonet/pn_dev.h3
-rw-r--r--net/phonet/af_phonet.c9
-rw-r--r--net/phonet/pn_dev.c4
4 files changed, 11 insertions, 6 deletions
diff --git a/include/net/phonet/phonet.h b/include/net/phonet/phonet.h
index 057b0a8a2885..d43f71b5ec00 100644
--- a/include/net/phonet/phonet.h
+++ b/include/net/phonet/phonet.h
@@ -105,7 +105,6 @@ void phonet_proto_unregister(int protocol, struct phonet_protocol *pp);
105 105
106int phonet_sysctl_init(void); 106int phonet_sysctl_init(void);
107void phonet_sysctl_exit(void); 107void phonet_sysctl_exit(void);
108void phonet_netlink_register(void);
109int isi_register(void); 108int isi_register(void);
110void isi_unregister(void); 109void isi_unregister(void);
111 110
diff --git a/include/net/phonet/pn_dev.h b/include/net/phonet/pn_dev.h
index aa1c59a1d33f..59ae628b1111 100644
--- a/include/net/phonet/pn_dev.h
+++ b/include/net/phonet/pn_dev.h
@@ -36,8 +36,9 @@ struct phonet_device {
36 DECLARE_BITMAP(addrs, 64); 36 DECLARE_BITMAP(addrs, 64);
37}; 37};
38 38
39void phonet_device_init(void); 39int phonet_device_init(void);
40void phonet_device_exit(void); 40void phonet_device_exit(void);
41void phonet_netlink_register(void);
41struct net_device *phonet_device_get(struct net *net); 42struct net_device *phonet_device_get(struct net *net);
42 43
43int phonet_address_add(struct net_device *dev, u8 addr); 44int phonet_address_add(struct net_device *dev, u8 addr);
diff --git a/net/phonet/af_phonet.c b/net/phonet/af_phonet.c
index c7c39d92ee5e..95bc49ddb8bf 100644
--- a/net/phonet/af_phonet.c
+++ b/net/phonet/af_phonet.c
@@ -426,16 +426,18 @@ static int __init phonet_init(void)
426{ 426{
427 int err; 427 int err;
428 428
429 err = phonet_device_init();
430 if (err)
431 return err;
432
429 err = sock_register(&phonet_proto_family); 433 err = sock_register(&phonet_proto_family);
430 if (err) { 434 if (err) {
431 printk(KERN_ALERT 435 printk(KERN_ALERT
432 "phonet protocol family initialization failed\n"); 436 "phonet protocol family initialization failed\n");
433 return err; 437 goto err_sock;
434 } 438 }
435 439
436 phonet_device_init();
437 dev_add_pack(&phonet_packet_type); 440 dev_add_pack(&phonet_packet_type);
438 phonet_netlink_register();
439 phonet_sysctl_init(); 441 phonet_sysctl_init();
440 442
441 err = isi_register(); 443 err = isi_register();
@@ -447,6 +449,7 @@ err:
447 phonet_sysctl_exit(); 449 phonet_sysctl_exit();
448 sock_unregister(PF_PHONET); 450 sock_unregister(PF_PHONET);
449 dev_remove_pack(&phonet_packet_type); 451 dev_remove_pack(&phonet_packet_type);
452err_sock:
450 phonet_device_exit(); 453 phonet_device_exit();
451 return err; 454 return err;
452} 455}
diff --git a/net/phonet/pn_dev.c b/net/phonet/pn_dev.c
index 5491bf5e354b..af49db01d634 100644
--- a/net/phonet/pn_dev.c
+++ b/net/phonet/pn_dev.c
@@ -188,9 +188,11 @@ static struct notifier_block phonet_device_notifier = {
188}; 188};
189 189
190/* Initialize Phonet devices list */ 190/* Initialize Phonet devices list */
191void phonet_device_init(void) 191int __init phonet_device_init(void)
192{ 192{
193 register_netdevice_notifier(&phonet_device_notifier); 193 register_netdevice_notifier(&phonet_device_notifier);
194 phonet_netlink_register();
195 return 0;
194} 196}
195 197
196void phonet_device_exit(void) 198void phonet_device_exit(void)