aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth
diff options
context:
space:
mode:
authorAndrzej Kaczmarek <andrzej.kaczmarek@tieto.com>2012-05-30 15:39:21 +0200
committerJohan Hedberg <johan.hedberg@intel.com>2012-06-05 06:34:15 +0300
commitdfc94dbdb999154dc2ff44e6011a4912c0b29e88 (patch)
tree26271a8b560a1f239fedc61a6dde79dd187f9a86 /net/bluetooth
parentBluetooth: Remove unused err var from l2cap_segment_sdu() (diff)
downloadlinux-dev-dfc94dbdb999154dc2ff44e6011a4912c0b29e88.tar.xz
linux-dev-dfc94dbdb999154dc2ff44e6011a4912c0b29e88.zip
Bluetooth: Allow only one LE connection attempt
Only one outgoing LE connection attempt should be possible. hci_connect() will now return -EBUSY in case there's another pending outgoing connection. Signed-off-by: Andrzej Kaczmarek <andrzej.kaczmarek@tieto.com> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Diffstat (limited to 'net/bluetooth')
-rw-r--r--net/bluetooth/hci_conn.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 1458667b2845..2fcced377e50 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -483,6 +483,11 @@ struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst,
if (type == LE_LINK) {
le = hci_conn_hash_lookup_ba(hdev, LE_LINK, dst);
if (!le) {
+ le = hci_conn_hash_lookup_state(hdev, LE_LINK,
+ BT_CONNECT);
+ if (le)
+ return ERR_PTR(-EBUSY);
+
le = hci_conn_add(hdev, LE_LINK, dst);
if (!le)
return ERR_PTR(-ENOMEM);