mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-21 10:01:00 +00:00
Bluetooth: L2CAP: Fix using wrong mode
[ Upstream commit30d5772273
] If user has a set to use SOCK_STREAM the socket would default to L2CAP_MODE_ERTM which later needs to be adjusted if the destination address is LE which doesn't support such mode. Fixes:15f02b9105
("Bluetooth: L2CAP: Add initial code for Enhanced Credit Based Mode") Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
a3641f64a9
commit
79d6a406df
1 changed files with 10 additions and 2 deletions
|
@ -161,7 +161,11 @@ static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
|
|||
break;
|
||||
}
|
||||
|
||||
if (chan->psm && bdaddr_type_is_le(chan->src_type))
|
||||
/* Use L2CAP_MODE_LE_FLOWCTL (CoC) in case of LE address and
|
||||
* L2CAP_MODE_EXT_FLOWCTL (ECRED) has not been set.
|
||||
*/
|
||||
if (chan->psm && bdaddr_type_is_le(chan->src_type) &&
|
||||
chan->mode != L2CAP_MODE_EXT_FLOWCTL)
|
||||
chan->mode = L2CAP_MODE_LE_FLOWCTL;
|
||||
|
||||
chan->state = BT_BOUND;
|
||||
|
@ -255,7 +259,11 @@ static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (chan->psm && bdaddr_type_is_le(chan->src_type) && !chan->mode)
|
||||
/* Use L2CAP_MODE_LE_FLOWCTL (CoC) in case of LE address and
|
||||
* L2CAP_MODE_EXT_FLOWCTL (ECRED) has not been set.
|
||||
*/
|
||||
if (chan->psm && bdaddr_type_is_le(chan->src_type) &&
|
||||
chan->mode != L2CAP_MODE_EXT_FLOWCTL)
|
||||
chan->mode = L2CAP_MODE_LE_FLOWCTL;
|
||||
|
||||
l2cap_sock_init_pid(sk);
|
||||
|
|
Loading…
Reference in a new issue