2022-09-16 21:46:16

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH BlueZ] a2dp: Fix not detecting transport connection collision

From: Luiz Augusto von Dentz <[email protected]>

Some headsets appears to attempt to connect back after receiving
AVDTP_Open which would cause unexpected transitions since setup->io
and stream->io would not be in sync:

> ACL Data RX: Handle 70 flags 0x02 dlen 6
Channel: 64 len 2 [PSM 25 mode Basic (0x00)] {chan 0}
AVDTP: Open (0x06) Response Accept (0x02) type 0x00 label 2 nosp 0
< ACL Data TX: Handle 70 flags 0x00 dlen 12
L2CAP: Connection Request (0x02) ident 6 len 4
PSM: 25 (0x0019)
Source CID: 67
> ACL Data RX: Handle 70 flags 0x02 dlen 12
L2CAP: Connection Request (0x02) ident 10 len 4
PSM: 25 (0x0019)
Source CID: 68
< ACL Data TX: Handle 70 flags 0x00 dlen 16
L2CAP: Connection Response (0x03) ident 10 len 8
Destination CID: 68
Source CID: 68
Result: Connection pending (0x0001)
Status: Authorization pending (0x0002)
< ACL Data TX: Handle 70 flags 0x00 dlen 16
L2CAP: Connection Response (0x03) ident 10 len 8
Destination CID: 68
Source CID: 68
Result: Connection successful (0x0000)
Status: No further information available (0x0000)
> ACL Data RX: Handle 70 flags 0x02 dlen 16
L2CAP: Connection Response (0x03) ident 6 len 8
Destination CID: 69
Source CID: 67
Result: Connection successful (0x0000)
Status: No further information available (0x0000)

Fixes: https://github.com/bluez/bluez/issues/327
---
profiles/audio/a2dp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/profiles/audio/a2dp.c b/profiles/audio/a2dp.c
index 276512208e13..47b5dd7c3d25 100644
--- a/profiles/audio/a2dp.c
+++ b/profiles/audio/a2dp.c
@@ -2522,7 +2522,8 @@ static void confirm_cb(GIOChannel *io, gpointer data)
if (!setup || !setup->stream)
goto drop;

- if (setup->io) {
+ if (setup->io || avdtp_stream_get_transport(setup->stream,
+ NULL, NULL, NULL, NULL)) {
error("transport channel already exists");
goto drop;
}
--
2.37.3


2022-09-16 22:44:02

by bluez.test.bot

[permalink] [raw]
Subject: RE: [BlueZ] a2dp: Fix not detecting transport connection collision

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=677765

---Test result---

Test Summary:
CheckPatch PASS 1.38 seconds
GitLint PASS 0.98 seconds
Prep - Setup ELL PASS 26.86 seconds
Build - Prep PASS 0.80 seconds
Build - Configure PASS 8.74 seconds
Build - Make PASS 845.32 seconds
Make Check PASS 12.12 seconds
Make Check w/Valgrind PASS 290.25 seconds
Make Distcheck PASS 236.74 seconds
Build w/ext ELL - Configure PASS 8.59 seconds
Build w/ext ELL - Make PASS 83.52 seconds
Incremental Build w/ patches PASS 0.00 seconds
Scan Build PASS 515.16 seconds



---
Regards,
Linux Bluetooth

2022-09-19 21:40:50

by patchwork-bot+bluetooth

[permalink] [raw]
Subject: Re: [PATCH BlueZ] a2dp: Fix not detecting transport connection collision

Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <[email protected]>:

On Fri, 16 Sep 2022 14:42:35 -0700 you wrote:
> From: Luiz Augusto von Dentz <[email protected]>
>
> Some headsets appears to attempt to connect back after receiving
> AVDTP_Open which would cause unexpected transitions since setup->io
> and stream->io would not be in sync:
>
> > ACL Data RX: Handle 70 flags 0x02 dlen 6
> Channel: 64 len 2 [PSM 25 mode Basic (0x00)] {chan 0}
> AVDTP: Open (0x06) Response Accept (0x02) type 0x00 label 2 nosp 0
> < ACL Data TX: Handle 70 flags 0x00 dlen 12
> L2CAP: Connection Request (0x02) ident 6 len 4
> PSM: 25 (0x0019)
> Source CID: 67
> > ACL Data RX: Handle 70 flags 0x02 dlen 12
> L2CAP: Connection Request (0x02) ident 10 len 4
> PSM: 25 (0x0019)
> Source CID: 68
> < ACL Data TX: Handle 70 flags 0x00 dlen 16
> L2CAP: Connection Response (0x03) ident 10 len 8
> Destination CID: 68
> Source CID: 68
> Result: Connection pending (0x0001)
> Status: Authorization pending (0x0002)
> < ACL Data TX: Handle 70 flags 0x00 dlen 16
> L2CAP: Connection Response (0x03) ident 10 len 8
> Destination CID: 68
> Source CID: 68
> Result: Connection successful (0x0000)
> Status: No further information available (0x0000)
> > ACL Data RX: Handle 70 flags 0x02 dlen 16
> L2CAP: Connection Response (0x03) ident 6 len 8
> Destination CID: 69
> Source CID: 67
> Result: Connection successful (0x0000)
> Status: No further information available (0x0000)
>
> [...]

Here is the summary with links:
- [BlueZ] a2dp: Fix not detecting transport connection collision
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=b7023510c929

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html