* [PATCH BlueZ] audio: Fix stale AVDTP connecting state
@ 2026-09-30 10:12 Kun Ma
2026-09-30 15:15 ` [BlueZ] " bluez.test.bot
2026-09-30 15:40 ` [PATCH BlueZ] " patchwork-bot+bluetooth
0 siblings, 2 replies; 3+ messages in thread
From: Kun Ma @ 2026-09-30 10:12 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Kun Ma
When a remote dual-role A2DP device reconnects autonomously, both sink
and source services transition to their respective CONNECTING states
upon AVDTP_SESSION_STATE_CONNECTING.
If the remote device only configures one direction (e.g. initiating a
stream from remote Source to local Sink), the unused direction's state
remains stuck in CONNECTING even after the underlying AVDTP session has
reached AVDTP_SESSION_STATE_CONNECTED.
Subsequently, when policy or userspace attempts to initiate audio
playback (e.g. via sink_connect() or source_connect()), the call fails
immediately with -EBUSY due to this stale CONNECTING state.
Fix this by only returning -EBUSY if the underlying AVDTP session is
actually still in AVDTP_SESSION_STATE_CONNECTING. In addition, check if
a stream already exists on that service to prevent concurrent stream
allocations while the session is connected.
Link: https://github.com/bluez/bluez/issues/2381
---
profiles/audio/sink.c | 6 +++++-
profiles/audio/source.c | 6 +++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/profiles/audio/sink.c b/profiles/audio/sink.c
index 81d5a3a6b..3363f421f 100644
--- a/profiles/audio/sink.c
+++ b/profiles/audio/sink.c
@@ -281,7 +281,11 @@ int sink_connect(struct btd_service *service)
if (sink->connect_id > 0 || sink->disconnect_id > 0)
return -EBUSY;
- if (sink->state == SINK_STATE_CONNECTING)
+ if (sink->state == SINK_STATE_CONNECTING &&
+ sink->session_state == AVDTP_SESSION_STATE_CONNECTING)
+ return -EBUSY;
+
+ if (sink->stream)
return -EBUSY;
if (sink->stream_state >= AVDTP_STATE_OPEN)
diff --git a/profiles/audio/source.c b/profiles/audio/source.c
index 6be4de74e..54f9c4a4e 100644
--- a/profiles/audio/source.c
+++ b/profiles/audio/source.c
@@ -282,7 +282,11 @@ int source_connect(struct btd_service *service)
if (source->connect_id > 0 || source->disconnect_id > 0)
return -EBUSY;
- if (source->state == SOURCE_STATE_CONNECTING)
+ if (source->state == SOURCE_STATE_CONNECTING &&
+ source->session_state == AVDTP_SESSION_STATE_CONNECTING)
+ return -EBUSY;
+
+ if (source->stream)
return -EBUSY;
if (source->stream_state >= AVDTP_STATE_OPEN)
--
2.55.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [BlueZ] audio: Fix stale AVDTP connecting state
2026-09-30 10:12 [PATCH BlueZ] audio: Fix stale AVDTP connecting state Kun Ma
@ 2026-09-30 15:15 ` bluez.test.bot
2026-09-30 15:40 ` [PATCH BlueZ] " patchwork-bot+bluetooth
1 sibling, 0 replies; 3+ messages in thread
From: bluez.test.bot @ 2026-09-30 15:15 UTC (permalink / raw)
To: linux-bluetooth, mk02092022
[-- Attachment #1: Type: text/plain, Size: 1021 bytes --]
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/series/1176758/
---Test result---
Test Summary:
CheckPatch PASS 0.33 seconds
GitLint PASS 0.24 seconds
BuildEll PASS 21.32 seconds
BluezMake PASS 396.35 seconds
MakeCheck PASS 3.27 seconds
MakeDistcheck PASS 148.40 seconds
CheckValgrind PASS 155.46 seconds
CheckSmatch PASS 297.88 seconds
bluezmakeextell PASS 97.33 seconds
TestFunctional PASS 1153.77 seconds
IncrementalBuild PASS 394.45 seconds
ScanBuild PASS 1136.70 seconds
https://github.com/bluez/bluez/pull/2614
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH BlueZ] audio: Fix stale AVDTP connecting state
2026-09-30 10:12 [PATCH BlueZ] audio: Fix stale AVDTP connecting state Kun Ma
2026-09-30 15:15 ` [BlueZ] " bluez.test.bot
@ 2026-09-30 15:40 ` patchwork-bot+bluetooth
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+bluetooth @ 2026-09-30 15:40 UTC (permalink / raw)
To: Kun Ma; +Cc: linux-bluetooth
Hello:
This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:
On Wed, 30 Sep 2026 18:12:40 +0800 you wrote:
> When a remote dual-role A2DP device reconnects autonomously, both sink
> and source services transition to their respective CONNECTING states
> upon AVDTP_SESSION_STATE_CONNECTING.
>
> If the remote device only configures one direction (e.g. initiating a
> stream from remote Source to local Sink), the unused direction's state
> remains stuck in CONNECTING even after the underlying AVDTP session has
> reached AVDTP_SESSION_STATE_CONNECTED.
>
> [...]
Here is the summary with links:
- [BlueZ] audio: Fix stale AVDTP connecting state
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=eda4262191ba
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-09-30 15:40 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-30 10:12 [PATCH BlueZ] audio: Fix stale AVDTP connecting state Kun Ma
2026-09-30 15:15 ` [BlueZ] " bluez.test.bot
2026-09-30 15:40 ` [PATCH BlueZ] " patchwork-bot+bluetooth
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox