diff options
Diffstat (limited to 'net/bluetooth/af_bluetooth.c')
| -rw-r--r-- | net/bluetooth/af_bluetooth.c | 38 | 
1 files changed, 17 insertions, 21 deletions
diff --git a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c index 91e3ba280706..f044202346c6 100644 --- a/net/bluetooth/af_bluetooth.c +++ b/net/bluetooth/af_bluetooth.c @@ -766,43 +766,39 @@ static int __init bt_init(void)  		return err;  	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");  	err = hci_sock_init(); -	if (err < 0) -		goto error; +	if (err) +		goto unregister_socket;  	err = l2cap_init(); -	if (err < 0) -		goto sock_err; +	if (err) +		goto cleanup_socket;  	err = sco_init(); -	if (err < 0) { -		l2cap_exit(); -		goto sock_err; -	} +	if (err) +		goto cleanup_cap;  	err = mgmt_init(); -	if (err < 0) { -		sco_exit(); -		l2cap_exit(); -		goto sock_err; -	} +	if (err) +		goto cleanup_sco;  	return 0; -sock_err: +cleanup_sco: +	sco_exit(); +cleanup_cap: +	l2cap_exit(); +cleanup_socket:  	hci_sock_cleanup(); - -error: +unregister_socket:  	sock_unregister(PF_BLUETOOTH); +cleanup_sysfs:  	bt_sysfs_cleanup(); -  	return err;  }  | 
