Bluetooth: AMP: Remove hci_conn receiving error command status
authorAndrei Emeltchenko <[email protected]>
Wed, 31 Oct 2012 13:46:33 +0000 (15:46 +0200)
committerGustavo Padovan <[email protected]>
Thu, 1 Nov 2012 22:27:08 +0000 (20:27 -0200)
When receiving HCI Event: Command Status for Create Physical Link
with Error code remove AMP hcon.

Signed-off-by: Andrei Emeltchenko <[email protected]>
Acked-by: Marcel Holtmann <[email protected]>
Signed-off-by: Gustavo Padovan <[email protected]>
net/bluetooth/hci_event.c

index bca71a8b1272d72e0d81c09948bd79b4f0da14e9..0572f051c6932b891044eb09f1892d7537c63007 100644 (file)
@@ -1809,14 +1809,23 @@ static void hci_cs_create_phylink(struct hci_dev *hdev, u8 status)
 
        BT_DBG("%s status 0x%2.2x", hdev->name, status);
 
-       if (status)
-               return;
-
        cp = hci_sent_cmd_data(hdev, HCI_OP_CREATE_PHY_LINK);
        if (!cp)
                return;
 
-       amp_write_remote_assoc(hdev, cp->phy_handle);
+       hci_dev_lock(hdev);
+
+       if (status) {
+               struct hci_conn *hcon;
+
+               hcon = hci_conn_hash_lookup_handle(hdev, cp->phy_handle);
+               if (hcon)
+                       hci_conn_del(hcon);
+       } else {
+               amp_write_remote_assoc(hdev, cp->phy_handle);
+       }
+
+       hci_dev_unlock(hdev);
 }
 
 static void hci_cs_accept_phylink(struct hci_dev *hdev, u8 status)