* [PATCH v2] Bluetooth: mgmt: reply to cancelled mgmt commands instead of silently dropping
@ 2026-08-17 6:01 Shuai Zhang
2026-08-17 6:38 ` [v2] " bluez.test.bot
0 siblings, 1 reply; 2+ messages in thread
From: Shuai Zhang @ 2026-08-17 6:01 UTC (permalink / raw)
To: Marcel Holtmann, Luiz Augusto von Dentz
Cc: linux-bluetooth, linux-kernel, linux-arm-msm, chejiang,
quic_chezhou, wei.deng, jinwang.li, mengshi.wu, Shuai Zhang
The kernel sets HCI_AUTO_OFF when a controller is first registered and
starts a 2-second timer. On slower boots bluetoothd and the HCI_AUTO_OFF
timer can race: hci_power_off() is already queued while bluetoothd is
still in the middle of its adapter setup sequence. hci_cmd_sync_clear()
then cancels any pending mgmt commands with -ECANCELED, including the
MGMT_OP_REMOVE_ADV_MONITOR sent by reset_adv_monitors() early in the
setup sequence.
When auto_off=1, hci_dev_close_sync() skips __mgmt_power_off() entirely,
so there is no fallback path to reply to the cancelled commands.
mgmt_remove_adv_monitor_complete() silently returns on -ECANCELED, leaving
the command with no reply. Since bluez's mgmt queue is strictly serialised,
this stalls all subsequent commands indefinitely, leaving bluetoothd unable
to register the adapter.
Fix by mapping -ECANCELED to MGMT_STATUS_CANCELLED in mgmt_errno_status()
and removing the early return in mgmt_remove_adv_monitor_complete(), so
bluetoothd receives a reply and can continue normally.
Signed-off-by: Shuai Zhang <shuai.zhang@oss.qualcomm.com>
---
net/bluetooth/mgmt.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index ac4864e56..c660bd3cd 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -301,6 +301,8 @@ static u8 mgmt_errno_status(int err)
return MGMT_STATUS_ALREADY_CONNECTED;
case -ENOTCONN:
return MGMT_STATUS_DISCONNECTED;
+ case -ECANCELED:
+ return MGMT_STATUS_CANCELLED;
}
return MGMT_STATUS_FAILED;
@@ -5675,9 +5677,6 @@ static void mgmt_remove_adv_monitor_complete(struct hci_dev *hdev,
struct mgmt_pending_cmd *cmd = data;
struct mgmt_cp_remove_adv_monitor *cp;
- if (status == -ECANCELED)
- return;
-
hci_dev_lock(hdev);
cp = cmd->param;
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* RE: [v2] Bluetooth: mgmt: reply to cancelled mgmt commands instead of silently dropping
2026-08-17 6:01 [PATCH v2] Bluetooth: mgmt: reply to cancelled mgmt commands instead of silently dropping Shuai Zhang
@ 2026-08-17 6:38 ` bluez.test.bot
0 siblings, 0 replies; 2+ messages in thread
From: bluez.test.bot @ 2026-08-17 6:38 UTC (permalink / raw)
To: linux-bluetooth, shuai.zhang
[-- Attachment #1: Type: text/plain, Size: 2192 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=1146959
---Test result---
Test Summary:
CheckPatch PASS 0.65 seconds
VerifyFixes PASS 0.10 seconds
VerifySignedoff PASS 0.12 seconds
GitLint FAIL 0.36 seconds
SubjectPrefix PASS 0.15 seconds
BuildKernel PASS 26.15 seconds
CheckAllWarning PASS 28.27 seconds
CheckSparse PASS 26.99 seconds
BuildKernel32 PASS 24.81 seconds
CheckKernelLLVM SKIP 0.00 seconds
TestRunnerSetup PASS 461.94 seconds
TestRunner_mgmt-tester FAIL 221.57 seconds
TestRunner_mesh-tester FAIL 27.18 seconds
IncrementalBuild PASS 24.04 seconds
Details
##############################
Test: GitLint - FAIL
Desc: Run gitlint
Output:
[v2] Bluetooth: mgmt: reply to cancelled mgmt commands instead of silently dropping
1: T1 Title exceeds max length (83>80): "[v2] Bluetooth: mgmt: reply to cancelled mgmt commands instead of silently dropping"
##############################
Test: CheckKernelLLVM - SKIP
Desc: Build kernel with LLVM + context analysis
Output:
Clang not found
##############################
Test: TestRunner_mgmt-tester - FAIL
Desc: Run mgmt-tester with test-runner
Output:
Total: 501, Passed: 496 (99.0%), Failed: 1, Not Run: 4
Failed Test Cases
Read Exp Feature - Success Failed 0.248 seconds
##############################
Test: TestRunner_mesh-tester - FAIL
Desc: Run mesh-tester with test-runner
Output:
Total: 10, Passed: 8 (80.0%), Failed: 2, Not Run: 0
Failed Test Cases
Mesh - Send cancel - 1 Timed out 2.792 seconds
Mesh - Send cancel - 2 Timed out 1.988 seconds
https://github.com/bluez/bluetooth-next/pull/595
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-08-17 6:38 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-17 6:01 [PATCH v2] Bluetooth: mgmt: reply to cancelled mgmt commands instead of silently dropping Shuai Zhang
2026-08-17 6:38 ` [v2] " bluez.test.bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox