Bluetooth: Fix deadlock with mgmt_pair_device
authorJohan Hedberg <johan.hedberg@intel.com>
Thu, 10 Nov 2011 13:54:37 +0000 (15:54 +0200)
committerGustavo F. Padovan <padovan@profusion.mobi>
Thu, 10 Nov 2011 19:54:06 +0000 (17:54 -0200)
The hci_conn callbacks are called with the hci_dev lock already held so
no locking should be attempted in them.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
net/bluetooth/mgmt.c

index d23a803d69dfa8edcd6f8d4877ad8016c7e47a64..c3d7852baa1f035071d3e359bbededfb088d2654 100644 (file)
@@ -1331,19 +1331,14 @@ static void pairing_complete(struct pending_cmd *cmd, u8 status)
 static void pairing_complete_cb(struct hci_conn *conn, u8 status)
 {
        struct pending_cmd *cmd;
-       struct hci_dev *hdev = conn->hdev;
 
        BT_DBG("status %u", status);
 
-       hci_dev_lock_bh(hdev);
-
        cmd = find_pairing(conn);
        if (!cmd)
                BT_DBG("Unable to find a pending command");
        else
                pairing_complete(cmd, status);
-
-       hci_dev_unlock_bh(hdev);
 }
 
 static int pair_device(struct sock *sk, u16 index, unsigned char *data, u16 len)