diff options
author | remi.denis-courmont@nokia <remi.denis-courmont@nokia> | 2009-01-22 22:00:27 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-01-27 00:03:34 -0500 |
commit | 76e02cf6945e6faa9f6b546dc0513512197c5966 (patch) | |
tree | e296f93f6ba6571443704871bf2d399a3bc5b98e | |
parent | 4b8f704bea70a2c8719e47f53197678a87a0c62f (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.h | 1 | ||||
-rw-r--r-- | include/net/phonet/pn_dev.h | 3 | ||||
-rw-r--r-- | net/phonet/af_phonet.c | 9 | ||||
-rw-r--r-- | net/phonet/pn_dev.c | 4 |
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 | ||
106 | int phonet_sysctl_init(void); | 106 | int phonet_sysctl_init(void); |
107 | void phonet_sysctl_exit(void); | 107 | void phonet_sysctl_exit(void); |
108 | void phonet_netlink_register(void); | ||
109 | int isi_register(void); | 108 | int isi_register(void); |
110 | void isi_unregister(void); | 109 | void 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 | ||
39 | void phonet_device_init(void); | 39 | int phonet_device_init(void); |
40 | void phonet_device_exit(void); | 40 | void phonet_device_exit(void); |
41 | void phonet_netlink_register(void); | ||
41 | struct net_device *phonet_device_get(struct net *net); | 42 | struct net_device *phonet_device_get(struct net *net); |
42 | 43 | ||
43 | int phonet_address_add(struct net_device *dev, u8 addr); | 44 | int 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); |
452 | err_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 */ |
191 | void phonet_device_init(void) | 191 | int __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 | ||
196 | void phonet_device_exit(void) | 198 | void phonet_device_exit(void) |