[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20260108020633.1729637-1-lilinmao@kylinos.cn>
Date: Thu, 8 Jan 2026 10:06:33 +0800
From: Linmao Li <lilinmao@...inos.cn>
To: linux-bluetooth@...r.kernel.org
Cc: marcel@...tmann.org,
luiz.dentz@...il.com,
linux-kernel@...r.kernel.org,
Linmao Li <lilinmao@...inos.cn>
Subject: [PATCH v2] Bluetooth: btusb: Reject autosuspend if discovery is active
If USB autosuspend occurs while discovery is active, the ongoing
HCI operation may not complete successfully. On some devices, this
can leave discovery.state stuck in DISCOVERY_FINDING.
Signed-off-by: Linmao Li <lilinmao@...inos.cn>
---
drivers/bluetooth/btusb.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index ded09e94d296..565e276be3b2 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -4469,10 +4469,11 @@ static int btusb_suspend(struct usb_interface *intf, pm_message_t message)
BT_DBG("intf %p", intf);
- /* Don't auto-suspend if there are connections; external suspend calls
- * shall never fail.
+ /* Don't auto-suspend if there are connections or discovery in
+ * progress; external suspend calls shall never fail.
*/
- if (PMSG_IS_AUTO(message) && hci_conn_count(data->hdev))
+ if (PMSG_IS_AUTO(message) &&
+ (hci_conn_count(data->hdev) || hci_discovery_active(data->hdev)))
return -EBUSY;
if (data->suspend_count++)
--
2.25.1
Powered by blists - more mailing lists