aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@intel.com>2011-11-10 08:54:37 -0500
committerGustavo F. Padovan <padovan@profusion.mobi>2011-11-10 14:54:06 -0500
commitc3f06755ca4279597cd58befd6c076ae2e3db480 (patch)
treeebfa3028bfeba47eb81840dd40d861b2bbbaaab4 /net
parent48264f06943e2db2c971b752949606f070d9d292 (diff)
Bluetooth: Fix deadlock with mgmt_pair_device
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>
Diffstat (limited to 'net')
-rw-r--r--net/bluetooth/mgmt.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index d23a803d69df..c3d7852baa1f 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -1331,19 +1331,14 @@ static void pairing_complete(struct pending_cmd *cmd, u8 status)
1331static void pairing_complete_cb(struct hci_conn *conn, u8 status) 1331static void pairing_complete_cb(struct hci_conn *conn, u8 status)
1332{ 1332{
1333 struct pending_cmd *cmd; 1333 struct pending_cmd *cmd;
1334 struct hci_dev *hdev = conn->hdev;
1335 1334
1336 BT_DBG("status %u", status); 1335 BT_DBG("status %u", status);
1337 1336
1338 hci_dev_lock_bh(hdev);
1339
1340 cmd = find_pairing(conn); 1337 cmd = find_pairing(conn);
1341 if (!cmd) 1338 if (!cmd)
1342 BT_DBG("Unable to find a pending command"); 1339 BT_DBG("Unable to find a pending command");
1343 else 1340 else
1344 pairing_complete(cmd, status); 1341 pairing_complete(cmd, status);
1345
1346 hci_dev_unlock_bh(hdev);
1347} 1342}
1348 1343
1349static int pair_device(struct sock *sk, u16 index, unsigned char *data, u16 len) 1344static int pair_device(struct sock *sk, u16 index, unsigned char *data, u16 len)