|
@@ -766,43 +766,39 @@ static int __init bt_init(void)
|
|
return err;
|
|
return err;
|
|
|
|
|
|
err = sock_register(&bt_sock_family_ops);
|
|
err = sock_register(&bt_sock_family_ops);
|
|
- if (err < 0) {
|
|
|
|
- bt_sysfs_cleanup();
|
|
|
|
- return err;
|
|
|
|
- }
|
|
|
|
|
|
+ if (err)
|
|
|
|
+ goto cleanup_sysfs;
|
|
|
|
|
|
BT_INFO("HCI device and connection manager initialized");
|
|
BT_INFO("HCI device and connection manager initialized");
|
|
|
|
|
|
err = hci_sock_init();
|
|
err = hci_sock_init();
|
|
- if (err < 0)
|
|
|
|
- goto error;
|
|
|
|
|
|
+ if (err)
|
|
|
|
+ goto unregister_socket;
|
|
|
|
|
|
err = l2cap_init();
|
|
err = l2cap_init();
|
|
- if (err < 0)
|
|
|
|
- goto sock_err;
|
|
|
|
|
|
+ if (err)
|
|
|
|
+ goto cleanup_socket;
|
|
|
|
|
|
err = sco_init();
|
|
err = sco_init();
|
|
- if (err < 0) {
|
|
|
|
- l2cap_exit();
|
|
|
|
- goto sock_err;
|
|
|
|
- }
|
|
|
|
|
|
+ if (err)
|
|
|
|
+ goto cleanup_cap;
|
|
|
|
|
|
err = mgmt_init();
|
|
err = mgmt_init();
|
|
- if (err < 0) {
|
|
|
|
- sco_exit();
|
|
|
|
- l2cap_exit();
|
|
|
|
- goto sock_err;
|
|
|
|
- }
|
|
|
|
|
|
+ if (err)
|
|
|
|
+ goto cleanup_sco;
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
-sock_err:
|
|
|
|
|
|
+cleanup_sco:
|
|
|
|
+ sco_exit();
|
|
|
|
+cleanup_cap:
|
|
|
|
+ l2cap_exit();
|
|
|
|
+cleanup_socket:
|
|
hci_sock_cleanup();
|
|
hci_sock_cleanup();
|
|
-
|
|
|
|
-error:
|
|
|
|
|
|
+unregister_socket:
|
|
sock_unregister(PF_BLUETOOTH);
|
|
sock_unregister(PF_BLUETOOTH);
|
|
|
|
+cleanup_sysfs:
|
|
bt_sysfs_cleanup();
|
|
bt_sysfs_cleanup();
|
|
-
|
|
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
|
|
|