Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1b259904 authored by Markus Elfring's avatar Markus Elfring Committed by Marcel Holtmann
Browse files

Bluetooth: Use common error handling code in bt_init()



* Improve jump targets so that a bit of exception handling can be better
  reused at the end of this function.

* Adjust five condition checks.

This issue was detected by using the Coccinelle software.

Signed-off-by: default avatarMarkus Elfring <elfring@users.sourceforge.net>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent ba8f3597
Loading
Loading
Loading
Loading
+17 −21
Original line number Diff line number Diff line
@@ -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;
}