public inbox for linux-bluetooth@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] device: Remove device after all bearers are disconnected
@ 2024-09-25  9:09 Cheng Jiang
  2024-09-25 10:37 ` [v3] " bluez.test.bot
  2024-09-25 14:56 ` [PATCH v3] " Luiz Augusto von Dentz
  0 siblings, 2 replies; 5+ messages in thread
From: Cheng Jiang @ 2024-09-25  9:09 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: quic_jiaymao

For a combo mode remote, both BR/EDR and BLE may be connected.
RemoveDevice should be handled after all bearers are dropped,
otherwise, remove device is not performed in adapter_remove_connection.
---
 src/device.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/device.c b/src/device.c
index f8f61e643..c25bf6b60 100644
--- a/src/device.c
+++ b/src/device.c
@@ -3492,8 +3492,18 @@ void device_remove_connection(struct btd_device *device, uint8_t bdaddr_type,
 		DBusMessage *msg = device->disconnects->data;
 
 		if (dbus_message_is_method_call(msg, ADAPTER_INTERFACE,
-								"RemoveDevice"))
+							"RemoveDevice")) {
+
+			/* Don't handle the RemoveDevice msg if device is
+			 * connected. For a dual mode remote, both BR/EDR
+			 * and BLE may be connected, RemoveDevice should
+			 * be handled after all bearers are disconnects.
+			 */
+			if (device->bredr_state.connected ||
+					device->le_state.connected)
+				break;
 			remove_device = true;
+		}
 
 		g_dbus_send_reply(dbus_conn, msg, DBUS_TYPE_INVALID);
 		device->disconnects = g_slist_remove(device->disconnects, msg);
-- 
2.25.1


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

end of thread, other threads:[~2024-09-26 14:47 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-25  9:09 [PATCH v3] device: Remove device after all bearers are disconnected Cheng Jiang
2024-09-25 10:37 ` [v3] " bluez.test.bot
2024-09-25 14:56 ` [PATCH v3] " Luiz Augusto von Dentz
2024-09-26  1:30   ` Cheng Jiang
2024-09-26 14:47     ` Luiz Augusto von Dentz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox