Linux bluetooth development
 help / color / mirror / Atom feed
* [PATCH BlueZ] shared/bap: Fix rejecting re-attach of the same fd
@ 2026-07-11  7:02 Ferose
  2026-07-11  8:34 ` [BlueZ] " bluez.test.bot
  2026-07-13 20:10 ` [PATCH BlueZ] " patchwork-bot+bluetooth
  0 siblings, 2 replies; 3+ messages in thread
From: Ferose @ 2026-07-11  7:02 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Luiz Augusto von Dentz, Ferose

When the remote's STREAMING ASE notification arrives before
iso_connect_cb() fires, the race handler in bap_state()
(profiles/audio/bap.c) already attaches the io to the stream; the
comment there notes "Order of STREAMING and iso_connect_cb() is
nondeterministic". When iso_connect_cb() then calls
bt_bap_stream_set_io() with the same fd, the guard in
bap_ucast_set_io() sees an attached, non-connecting io and returns
false. iso_connect_cb() treats that as fatal:

  profiles/audio/bap.c:iso_connect_cb() Unable to set IO
  profiles/audio/transport.c:bap_state_changed() Unable to get stream IO

and tears down a CIS that btmon shows was established successfully
(CIS Established status 0, both ISO data paths set up). With a device
whose STREAMING notifications consistently win the race, streaming is
never possible.

Treat re-attaching the fd that is already attached as a no-op success,
without re-running the per-stream state actions (which would send a
duplicate Receiver Start Ready to a linked source ASE). Attaching a
different fd to a non-connecting io remains an error.

Fixes: https://github.com/bluez/bluez/issues/2223
---
 src/shared/bap.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/shared/bap.c b/src/shared/bap.c
index db6f4f2..1660b8b 100644
--- a/src/shared/bap.c
+++ b/src/shared/bap.c
@@ -2589,9 +2589,18 @@ static unsigned int bap_bcast_release(struct bt_bap_stream *stream,
 
 static bool bap_ucast_set_io(struct bt_bap_stream *stream, int fd)
 {
-	if (!stream || (fd >= 0 && stream->io && !stream->io->connecting))
+	if (!stream)
 		return false;
 
+	/*
+	 * The STREAMING state handler may already have attached this io
+	 * if the remote's ASE notification raced ahead of iso_connect_cb
+	 * (see bap_state() in profiles/audio/bap.c). Re-attaching the
+	 * same fd is a no-op success; only a different fd is an error.
+	 */
+	if (fd >= 0 && stream->io && !stream->io->connecting)
+		return stream_io_get_fd(stream->io) == fd;
+
 	bap_stream_set_io(stream, INT_TO_PTR(fd));
 
 	queue_foreach(stream->links, bap_stream_set_io, INT_TO_PTR(fd));
-- 
2.50.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* RE: [BlueZ] shared/bap: Fix rejecting re-attach of the same fd
  2026-07-11  7:02 [PATCH BlueZ] shared/bap: Fix rejecting re-attach of the same fd Ferose
@ 2026-07-11  8:34 ` bluez.test.bot
  2026-07-13 20:10 ` [PATCH BlueZ] " patchwork-bot+bluetooth
  1 sibling, 0 replies; 3+ messages in thread
From: bluez.test.bot @ 2026-07-11  8:34 UTC (permalink / raw)
  To: linux-bluetooth, ferose2

[-- Attachment #1: Type: text/plain, Size: 1600 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/project/bluetooth/list/?series=1125740

---Test result---

Test Summary:
CheckPatch                    PASS      0.48 seconds
GitLint                       PASS      0.33 seconds
BuildEll                      PASS      20.21 seconds
BluezMake                     PASS      542.83 seconds
MakeCheck                     PASS      12.74 seconds
MakeDistcheck                 PASS      157.54 seconds
CheckValgrind                 PASS      204.16 seconds
CheckSmatch                   WARNING   306.24 seconds
bluezmakeextell               PASS      100.48 seconds
IncrementalBuild              PASS      538.46 seconds
ScanBuild                     PASS      964.22 seconds

Details
##############################
Test: CheckSmatch - WARNING
Desc: Run smatch tool with source
Output:
src/shared/bap.c:318:25: warning: array of flexible structuressrc/shared/bap.c: note: in included file:./src/shared/ascs.h:88:25: warning: array of flexible structuressrc/shared/bap.c:318:25: warning: array of flexible structuressrc/shared/bap.c: note: in included file:./src/shared/ascs.h:88:25: warning: array of flexible structuressrc/shared/bap.c:318:25: warning: array of flexible structuressrc/shared/bap.c: note: in included file:./src/shared/ascs.h:88:25: warning: array of flexible structures


https://github.com/bluez/bluez/pull/2298

---
Regards,
Linux Bluetooth


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH BlueZ] shared/bap: Fix rejecting re-attach of the same fd
  2026-07-11  7:02 [PATCH BlueZ] shared/bap: Fix rejecting re-attach of the same fd Ferose
  2026-07-11  8:34 ` [BlueZ] " bluez.test.bot
@ 2026-07-13 20:10 ` patchwork-bot+bluetooth
  1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+bluetooth @ 2026-07-13 20:10 UTC (permalink / raw)
  To: Ferose; +Cc: linux-bluetooth, luiz.von.dentz

Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Sat, 11 Jul 2026 00:02:30 -0700 you wrote:
> When the remote's STREAMING ASE notification arrives before
> iso_connect_cb() fires, the race handler in bap_state()
> (profiles/audio/bap.c) already attaches the io to the stream; the
> comment there notes "Order of STREAMING and iso_connect_cb() is
> nondeterministic". When iso_connect_cb() then calls
> bt_bap_stream_set_io() with the same fd, the guard in
> bap_ucast_set_io() sees an attached, non-connecting io and returns
> false. iso_connect_cb() treats that as fatal:
> 
> [...]

Here is the summary with links:
  - [BlueZ] shared/bap: Fix rejecting re-attach of the same fd
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=7f826d003ee7

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-07-13 20:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-11  7:02 [PATCH BlueZ] shared/bap: Fix rejecting re-attach of the same fd Ferose
2026-07-11  8:34 ` [BlueZ] " bluez.test.bot
2026-07-13 20:10 ` [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