Update to 5.86
Re-add btmgmt as it does not require bluetoothd to be running, unlike bluetoothctl mgmt Fix audio output not working in some circumstances Resolves: RHEL-147735
This commit is contained in:
parent
32bfc4090b
commit
b321c9b262
35
0001-a2dp-connect-source-profile-after-sink.patch
Normal file
35
0001-a2dp-connect-source-profile-after-sink.patch
Normal file
@ -0,0 +1,35 @@
|
||||
From 066a164a524e4983b850f5659b921cb42f84a0e0 Mon Sep 17 00:00:00 2001
|
||||
From: Pauli Virtanen <pav@iki.fi>
|
||||
Date: Mon, 16 Feb 2026 18:17:08 +0200
|
||||
Subject: [PATCH] a2dp: connect source profile after sink
|
||||
|
||||
Since cdcd845f87ee the order in which profiles with the same priority
|
||||
are connected is the same order as btd_profile_register() is called,
|
||||
instead of being the opposite order. When initiating connections, we
|
||||
want to prefer a2dp-sink profile over a2dp-source, as connecting both at
|
||||
the same time does not work currently.
|
||||
|
||||
Add .after_services to specify the order.
|
||||
|
||||
Fixes: https://github.com/bluez/bluez/issues/1898
|
||||
---
|
||||
profiles/audio/a2dp.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/profiles/audio/a2dp.c b/profiles/audio/a2dp.c
|
||||
index 7a37003a2b25..c7e0fc75c09e 100644
|
||||
--- a/profiles/audio/a2dp.c
|
||||
+++ b/profiles/audio/a2dp.c
|
||||
@@ -3769,6 +3769,9 @@ static struct btd_profile a2dp_source_profile = {
|
||||
|
||||
.adapter_probe = a2dp_sink_server_probe,
|
||||
.adapter_remove = a2dp_sink_server_remove,
|
||||
+
|
||||
+ /* Connect source after sink, to prefer sink when conflicting */
|
||||
+ .after_services = BTD_PROFILE_UUID_CB(NULL, A2DP_SINK_UUID),
|
||||
};
|
||||
|
||||
static struct btd_profile a2dp_sink_profile = {
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@ -1,27 +0,0 @@
|
||||
From c9ec6137b16aaf371b311f4777a042ec1175719b Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Thu, 29 Jan 2026 13:40:52 +0100
|
||||
Subject: [PATCH] build: Don't install btmgmt man page as tool isn't
|
||||
|
||||
The btmgmt tool isn't installed through the Makefiles, so the
|
||||
man page shouldn't be installed either.
|
||||
---
|
||||
Makefile.tools | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile.tools b/Makefile.tools
|
||||
index 561b03d0b95b..f0b106fae7ef 100644
|
||||
--- a/Makefile.tools
|
||||
+++ b/Makefile.tools
|
||||
@@ -355,7 +355,7 @@ profiles_iap_iapd_LDADD = gdbus/libgdbus-internal.la $(GLIB_LIBS) $(DBUS_LIBS)
|
||||
|
||||
if MANPAGES
|
||||
man_MANS += tools/rctest.1 tools/l2ping.1 tools/btattach.1 tools/isotest.1 \
|
||||
- tools/btmgmt.1 client/bluetoothctl.1 \
|
||||
+ client/bluetoothctl.1 \
|
||||
client/bluetoothctl-mgmt.1 \
|
||||
client/bluetoothctl-monitor.1 client/bluetoothctl-admin.1 \
|
||||
client/bluetoothctl-advertise.1 client/bluetoothctl-endpoint.1 \
|
||||
--
|
||||
2.52.0
|
||||
|
||||
32
0001-tools-btmgmt-Fix-btmgmt-help-hanging.patch
Normal file
32
0001-tools-btmgmt-Fix-btmgmt-help-hanging.patch
Normal file
@ -0,0 +1,32 @@
|
||||
From 37f62e78dc3925625c7aaa083dcc410d9bac4940 Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Wed, 11 Mar 2026 11:48:45 +0100
|
||||
Subject: [PATCH] tools/btmgmt: Fix btmgmt --help hanging
|
||||
|
||||
btmgmt when run interactively would wait for commands on its prompt, but
|
||||
that prompt is never setup when the help output is requested.
|
||||
|
||||
Handle --help through bt_shell_handle_non_interactive_help() so that the
|
||||
application exits as soon as the help content has been printed, like
|
||||
other interactive apps in bluez.
|
||||
---
|
||||
tools/btmgmt.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/tools/btmgmt.c b/tools/btmgmt.c
|
||||
index 0f3de2880014..762a3a141c4a 100644
|
||||
--- a/tools/btmgmt.c
|
||||
+++ b/tools/btmgmt.c
|
||||
@@ -47,6 +47,9 @@ int main(int argc, char *argv[])
|
||||
bt_shell_init(argc, argv, &opt);
|
||||
|
||||
mgmt_add_submenu();
|
||||
+
|
||||
+ bt_shell_handle_non_interactive_help();
|
||||
+
|
||||
mgmt_set_index(index_option);
|
||||
bt_shell_attach(fileno(stdin));
|
||||
status = bt_shell_run();
|
||||
--
|
||||
2.53.0
|
||||
|
||||
41
big-endian-5.86.patch
Normal file
41
big-endian-5.86.patch
Normal file
@ -0,0 +1,41 @@
|
||||
From 3a5c4d311755910f07e60fd30d4736ac98bea8eb Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Tue, 10 Feb 2026 10:06:28 +0100
|
||||
Subject: [PATCH] emulator: Fix compilation on big endian systems
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This fixes the build on big endian systems like s390x:
|
||||
|
||||
Remove the "static" so the array doesn't need to be initialised
|
||||
with constants.
|
||||
|
||||
emulator/bthost.c: In function ‘bthost_setup_sco’:
|
||||
./src/shared/util.h:43:26: error: initializer element is not constant
|
||||
43 | #define cpu_to_le32(val) bswap_32(val)
|
||||
| ^~~~~~~~
|
||||
etc.
|
||||
|
||||
Fixes: 85888a8357ea ("bthost: add bthost_setup_sco() and accept
|
||||
incoming eSCO")
|
||||
---
|
||||
emulator/bthost.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/emulator/bthost.c b/emulator/bthost.c
|
||||
index d09ad1e76c50..53b12f828675 100644
|
||||
--- a/emulator/bthost.c
|
||||
+++ b/emulator/bthost.c
|
||||
@@ -3560,7 +3560,7 @@ void bthost_hci_disconnect(struct bthost *bthost, uint16_t handle,
|
||||
int bthost_setup_sco(struct bthost *bthost, uint16_t acl_handle,
|
||||
uint16_t setting)
|
||||
{
|
||||
- static const struct bt_hci_cmd_setup_sync_conn settings[] = {
|
||||
+ const struct bt_hci_cmd_setup_sync_conn settings[] = {
|
||||
{
|
||||
.tx_bandwidth = cpu_to_le32(0x00001f40),
|
||||
.rx_bandwidth = cpu_to_le32(0x00001f40),
|
||||
--
|
||||
2.52.0
|
||||
|
||||
79
bluetoothctl-no-output.patch
Normal file
79
bluetoothctl-no-output.patch
Normal file
@ -0,0 +1,79 @@
|
||||
From 33dd33a23ff250902eafa94fce5ea8178de50112 Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Fri, 27 Feb 2026 12:07:14 +0100
|
||||
Subject: [PATCH 1/2] Revert "shared/shell: Don't init input for
|
||||
non-interactive shells"
|
||||
|
||||
This reverts commit e73bf582dae60356641a32fc27ae03d359ec4c47.
|
||||
|
||||
The fix caused "bluetoothctl list" to not output any text, breaking
|
||||
a lot of existing scripts.
|
||||
|
||||
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2440346
|
||||
---
|
||||
src/shared/shell.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/shared/shell.c b/src/shared/shell.c
|
||||
index 78d58c513d3e..b061f8001414 100644
|
||||
--- a/src/shared/shell.c
|
||||
+++ b/src/shared/shell.c
|
||||
@@ -1642,13 +1642,13 @@ static bool shell_quit(void *data)
|
||||
|
||||
bool bt_shell_attach(int fd)
|
||||
{
|
||||
- if (data.mode == MODE_INTERACTIVE) {
|
||||
- struct input *input;
|
||||
+ struct input *input;
|
||||
|
||||
- input = input_new(fd);
|
||||
- if (!input)
|
||||
- return false;
|
||||
+ input = input_new(fd);
|
||||
+ if (!input)
|
||||
+ return false;
|
||||
|
||||
+ if (data.mode == MODE_INTERACTIVE) {
|
||||
io_set_read_handler(input->io, input_read, input, NULL);
|
||||
io_set_disconnect_handler(input->io, input_hup, input, NULL);
|
||||
|
||||
--
|
||||
2.53.0
|
||||
|
||||
|
||||
From 0178bc8bda31cf60837fcce91b33e009bc3f7d7d Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Fri, 27 Feb 2026 12:24:13 +0100
|
||||
Subject: [PATCH 2/2] tools: Work-around broken stdin handling in home-made
|
||||
mainloop
|
||||
|
||||
bluetoothd has 3 mainloop implementations, one relying on ell, one
|
||||
relying on glib, and another home-made.
|
||||
|
||||
The home-made mainloop handler use epoll() without any fallbacks, and
|
||||
will hang if one tries to epoll() an stdin that redirects from
|
||||
/dev/null.
|
||||
|
||||
Closes: https://github.com/bluez/bluez/issues/700
|
||||
---
|
||||
Makefile.tools | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Makefile.tools b/Makefile.tools
|
||||
index 589f7c94f9df..7c52e053ffee 100644
|
||||
--- a/Makefile.tools
|
||||
+++ b/Makefile.tools
|
||||
@@ -531,8 +531,8 @@ tools_obexctl_LDADD = gdbus/libgdbus-internal.la src/libshared-glib.la \
|
||||
|
||||
tools_btmgmt_SOURCES = tools/btmgmt.c src/uuid-helper.c client/display.c \
|
||||
client/mgmt.c
|
||||
-tools_btmgmt_LDADD = lib/libbluetooth-internal.la src/libshared-mainloop.la \
|
||||
- -lreadline
|
||||
+tools_btmgmt_LDADD = lib/libbluetooth-internal.la src/libshared-glib.la \
|
||||
+ $(GLIB_LIBS) -lreadline
|
||||
if DEPRECATED
|
||||
noinst_PROGRAMS += attrib/gatttool
|
||||
|
||||
--
|
||||
2.53.0
|
||||
|
||||
27
bluez.spec
27
bluez.spec
@ -5,7 +5,7 @@
|
||||
%endif
|
||||
|
||||
Name: bluez
|
||||
Version: 5.85
|
||||
Version: 5.86
|
||||
Release: 1%{?dist}
|
||||
Summary: Bluetooth utilities
|
||||
License: GPL-2.0-or-later
|
||||
@ -21,8 +21,14 @@ Patch2: 0001-shared-shell-Free-memory-allocated-by-wordexp.patch
|
||||
Patch3: static-analysis-issues-6.patch
|
||||
# Coverity downstream patches
|
||||
Patch4: coverity-workarounds.patch
|
||||
# https://patchwork.kernel.org/project/bluetooth/patch/20260129125948.2724071-2-hadess@hadess.net/
|
||||
Patch5: 0001-build-Don-t-install-btmgmt-man-page-as-tool-isn-t.patch
|
||||
# https://patchwork.kernel.org/project/bluetooth/list/?series=1052631
|
||||
Patch5: big-endian-5.86.patch
|
||||
# https://patchwork.kernel.org/project/bluetooth/patch/ba0e71b91a24557f088b015a349c6ccee6260ec2.1771258477.git.pav@iki.fi/
|
||||
Patch6: 0001-a2dp-connect-source-profile-after-sink.patch
|
||||
# https://patchwork.kernel.org/project/bluetooth/list/?series=1058931
|
||||
Patch7: bluetoothctl-no-output.patch
|
||||
# https://patchwork.kernel.org/project/bluetooth/patch/20260311111540.2170373-2-hadess@hadess.net/
|
||||
Patch8: 0001-tools-btmgmt-Fix-btmgmt-help-hanging.patch
|
||||
|
||||
BuildRequires: dbus-devel >= 1.6
|
||||
BuildRequires: glib2-devel
|
||||
@ -176,6 +182,12 @@ install -m0755 attrib/gatttool $RPM_BUILD_ROOT%{_bindir}
|
||||
# Red Hat Bugzilla bug #1699680
|
||||
install -m0755 tools/avinfo $RPM_BUILD_ROOT%{_bindir}
|
||||
|
||||
# btmgmt is not installed by "make install", but it is useful for debugging
|
||||
# some issues and to set the MAC address on HCIs which don't have their
|
||||
# MAC address configured
|
||||
install -m0755 tools/btmgmt $RPM_BUILD_ROOT%{_bindir}
|
||||
install -m0644 doc/btmgmt.1 $RPM_BUILD_ROOT%{_mandir}/man1/
|
||||
|
||||
# Remove libtool archive
|
||||
find $RPM_BUILD_ROOT -name '*.la' -delete
|
||||
|
||||
@ -244,11 +256,13 @@ install emulator/btvirt ${RPM_BUILD_ROOT}/%{_libexecdir}/bluetooth/
|
||||
%{_bindir}/bluemoon
|
||||
%{_bindir}/bluetoothctl
|
||||
%{_bindir}/btattach
|
||||
%{_bindir}/btmgmt
|
||||
%{_bindir}/btmon
|
||||
%{_bindir}/hex2hcd
|
||||
%{_bindir}/mpris-proxy
|
||||
%{_mandir}/man1/bluetoothctl.1.*
|
||||
%{_mandir}/man1/bluetoothctl-*.1.*
|
||||
%{_mandir}/man1/btmgmt.1.*
|
||||
%{_mandir}/man1/btattach.1.*
|
||||
%{_mandir}/man1/btmon.1.*
|
||||
%{_mandir}/man8/bluetoothd.8.*
|
||||
@ -338,6 +352,13 @@ install emulator/btvirt ${RPM_BUILD_ROOT}/%{_libexecdir}/bluetooth/
|
||||
%{_userunitdir}/obex.service
|
||||
|
||||
%changelog
|
||||
* Tue Feb 10 2026 Bastien Nocera <bnocera@redhat.com> - 5.86-1
|
||||
- Update to 5.86
|
||||
- Re-add btmgmt as it does not require bluetoothd to be running,
|
||||
unlike bluetoothctl mgmt
|
||||
- Fix audio output not working in some circumstances
|
||||
Resolves: RHEL-147735
|
||||
|
||||
* Mon Jan 26 2026 Bastien Nocera <bnocera@redhat.com> - 5.85-1
|
||||
- Update to 5.85
|
||||
Resolves: RHEL-142551
|
||||
|
||||
@ -3,3 +3,5 @@ badfuncs:
|
||||
allowed:
|
||||
/usr/bin/btmon:
|
||||
- inet_addr
|
||||
/usr/libexec/bluetooth/btvirt:
|
||||
- inet_addr
|
||||
|
||||
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (bluez-5.85.tar.xz) = 5bee1734dc0e67e99a655b894b0a191d43a3ca9d7834186dcbf82a0f1e51c510723a9877e0b1a0bf53296c22acc8eae8260a04d8d288d94c37310b4ac6bc0a69
|
||||
SHA512 (bluez-5.86.tar.xz) = d3268be43ad869dabd9d9eabc7a0da699837bb5432ecf61e1756e03f9b867a1d989299db1493bd349d73b495d736f55d7518fbb9ee664de49e5d1cf7c2156df7
|
||||
|
||||
@ -76,41 +76,6 @@ index e3d2d63ce1ff..b803dbf14dac 100644
|
||||
2.52.0
|
||||
|
||||
|
||||
From 9089d3c9c92d19ffcbe3e6f679a7894600ab46af Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Thu, 18 Jul 2024 15:45:47 +0200
|
||||
Subject: [PATCH 3/8] health: mcap: Ensure sent doesn't overflow
|
||||
|
||||
Error: INTEGER_OVERFLOW (CWE-190): [#def13] [important]
|
||||
bluez-5.77/profiles/health/mcap.c:390:2: tainted_data_argument: The check "sent < size" contains the tainted expression "sent" which causes "size" to be considered tainted.
|
||||
bluez-5.77/profiles/health/mcap.c:391:3: overflow: The expression "size - sent" is deemed overflowed because at least one of its arguments has overflowed.
|
||||
bluez-5.77/profiles/health/mcap.c:391:3: overflow_sink: "size - sent", which might have underflowed, is passed to "write(sock, buf_b + sent, size - sent)".
|
||||
389|
|
||||
390| while (sent < size) {
|
||||
391|-> int n = write(sock, buf_b + sent, size - sent);
|
||||
392| if (n < 0)
|
||||
393| return -1;
|
||||
---
|
||||
profiles/health/mcap.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/profiles/health/mcap.c b/profiles/health/mcap.c
|
||||
index b7e51d15cdb5..f43cb919aaba 100644
|
||||
--- a/profiles/health/mcap.c
|
||||
+++ b/profiles/health/mcap.c
|
||||
@@ -389,7 +389,7 @@ int mcap_send_data(int sock, const void *buf, uint32_t size)
|
||||
|
||||
while (sent < size) {
|
||||
int n = write(sock, buf_b + sent, size - sent);
|
||||
- if (n < 0)
|
||||
+ if (n < 0 || n > SSIZE_MAX - sent)
|
||||
return -1;
|
||||
sent += n;
|
||||
}
|
||||
--
|
||||
2.52.0
|
||||
|
||||
|
||||
From 45271ed3fd87d238836181b3534ddf3777f535e9 Mon Sep 17 00:00:00 2001
|
||||
From: Bastien Nocera <hadess@hadess.net>
|
||||
Date: Fri, 19 Jul 2024 11:26:45 +0200
|
||||
|
||||
@ -14,6 +14,9 @@ bluetoothctl --timeout 2 --help
|
||||
# Is btattach present and doesn't fail if called
|
||||
btattach --version
|
||||
|
||||
# Is btmgmt present and doesn't fail if called
|
||||
btmgmt --help
|
||||
|
||||
# Is bluetoothctl mgmt's menu is present and doesn't fail if called
|
||||
bluetoothctl --timeout 2 --help | grep mgmt
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user