Thread (16 messages) 16 messages, 2 authors, 2013-07-18

Re: [PATCH v9 8/9] Bluetooth: Prevent transparent SCO on older devices

flat view

From: Marcel Holtmann <marcel@holtmann.org>
Date: 2013-07-18 01:15:09

Hi Fred,
quoted hunk ↗ jump to hunk
Older Bluetooth devices may not support Setup Synchronous Connection or SCO
transparent data. This is indicated by the corresponding LMP feature bits.
It is not possible to know if the adapter support these features 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 request BT_VOICE_TRANSPARENT, outgoing
connections fail on connect() and returns -EOPNOTSUPP. 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 <redacted>
---
net/bluetooth/sco.c |    6 ++++++
1 file changed, 6 insertions(+)
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
index 934002c..190765c 100644
--- a/net/bluetooth/sco.c
+++ b/net/bluetooth/sco.c
@@ -176,6 +176,12 @@ static int sco_connect(struct sock *sk)
	else
		type = SCO_LINK;

+	if (sco_pi(sk)->setting == BT_VOICE_TRANSPARENT &&
+	    (!lmp_transp_capable(hdev) || !lmp_esco_capable(hdev))) {
+		err = -ECONNABORTED;
the error message does not match the commit description. It seems you want to return EOPNOTSUPP here.
+		goto done;
+	}
+
	hcon = hci_connect_sco(hdev, type, dst, sco_pi(sk)->setting);
	if (IS_ERR(hcon)) {
		err = PTR_ERR(hcon);
Regards

Marcel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help