diff --git a/subsys/bluetooth/host/conn.c b/subsys/bluetooth/host/conn.c index 8a62c1fb3ba..a51b9a73787 100644 --- a/subsys/bluetooth/host/conn.c +++ b/subsys/bluetooth/host/conn.c @@ -1264,6 +1264,11 @@ void bt_conn_set_state(struct bt_conn *conn, bt_conn_state_t state) */ switch (old_state) { case BT_CONN_DISCONNECT_COMPLETE: + /* Any previously scheduled deferred work now becomes invalid + * so cancel it here, before we yield to tx thread. + */ + k_work_cancel_delayable(&conn->deferred_work); + bt_conn_tx_notify(conn, true); bt_conn_reset_rx_state(conn);