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

Commit abf54a50 authored by Andre Guedes's avatar Andre Guedes Committed by Gustavo Padovan
Browse files

Bluetooth: Remove unneeded check in hci_disconn_complete_evt()



According to b644ba33 (patch that introduced HCI_CONN_MGMT_CONNECTED
flag), the HCI_CONN_MGMT_CONNECTED flag tracks when mgmt has been
notified about the connection.

That being said, there is no point in calling mgmt_disconnect_failed()
conditionally based on this flag. mgmt_disconnect_failed() removes
pending MGMT_OP_DISCONNECT commands, it doesn't matter if that
connection was notified or not.

Moreover, if the Disconnection Complete event has status then we have
nothing else to do but call mgmt_disconnect_failed() and return.

Signed-off-by: default avatarAndre Guedes <andre.guedes@openbossa.org>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent 35580d22
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -1779,6 +1779,7 @@ static u8 hci_to_mgmt_reason(u8 err)
static void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
{
	struct hci_ev_disconn_complete *ev = (void *) skb->data;
	u8 reason = hci_to_mgmt_reason(ev->reason);
	struct hci_conn *conn;

	BT_DBG("%s status 0x%2.2x", hdev->name, ev->status);
@@ -1792,17 +1793,15 @@ static void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
	if (ev->status == 0)
		conn->state = BT_CLOSED;

	if (test_and_clear_bit(HCI_CONN_MGMT_CONNECTED, &conn->flags)) {
	if (ev->status) {
		mgmt_disconnect_failed(hdev, &conn->dst, conn->type,
				       conn->dst_type, ev->status);
		} else {
			u8 reason = hci_to_mgmt_reason(ev->reason);
		goto unlock;
	}

	if (test_and_clear_bit(HCI_CONN_MGMT_CONNECTED, &conn->flags))
		mgmt_device_disconnected(hdev, &conn->dst, conn->type,
					 conn->dst_type, reason);
		}
	}

	if (ev->status == 0) {
		u8 type = conn->type;