[PATCH v8 8/8] Bluetooth: Prevent transparent SCO on older devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Older Bluetooth devices may not support Setup Synchronous Connection. This is
indicated by the eSCO support feature bit. It is not possible to know if the
adapter support eSCO before setting BT_VOICE option since the socket is not
bound to an adapter. An adapter can also be added after the socket is created.
The socket can be bound to an address before adapter is plugged in.

Thus, on a such adapters, if user requested something else than
BT_VOICE_CVSD_16BIT, outgoing connections fail on connect() and returns
-ECONNABORTED. Incoming connections do not fail. However, they should only be
allowed depending on what was specified in Write_Voice_Settings command.

Signed-off-by: Frédéric Dalleau <frederic.dalleau@xxxxxxxxxxxxxxx>
---
 net/bluetooth/sco.c |    5 +++++
 1 file changed, 5 insertions(+)

diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
index 546b7f6..02a602e 100644
--- a/net/bluetooth/sco.c
+++ b/net/bluetooth/sco.c
@@ -176,6 +176,11 @@ static int sco_connect(struct sock *sk)
 	else
 		type = SCO_LINK;
 
+	if (type == SCO_LINK && sco_pi(sk)->setting != BT_VOICE_CVSD_16BIT) {
+		err = -ECONNABORTED;
+		goto done;
+	}
+
 	hcon = hci_connect_sco(hdev, type, dst, sco_pi(sk)->setting);
 	if (IS_ERR(hcon)) {
 		err = PTR_ERR(hcon);
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux