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

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

 



Hi Fred,

> 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 <frederic.dalleau@xxxxxxxxxxxxxxx>
> ---
> 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

--
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