summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net/bluetooth/mgmt.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 000abc07bc1..30a30b7b301 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -617,10 +617,6 @@ static void mgmt_init_hdev(struct hci_dev *hdev)
*/
clear_bit(HCI_PAIRABLE, &hdev->dev_flags);
}
-
- if (!test_and_set_bit(HCI_SERVICE_CACHE, &hdev->dev_flags))
- schedule_delayed_work(&hdev->service_cache,
- msecs_to_jiffies(SERVICE_CACHE_TIMEOUT));
}
static int read_controller_info(struct sock *sk, u16 index)
@@ -1399,6 +1395,12 @@ static int remove_uuid(struct sock *sk, u16 index, void *data, u16 len)
if (memcmp(cp->uuid, bt_uuid_any, 16) == 0) {
err = hci_uuids_clear(hdev);
+
+ if (hdev_is_powered(hdev) &&
+ !test_and_set_bit(HCI_SERVICE_CACHE, &hdev->dev_flags))
+ schedule_delayed_work(&hdev->service_cache,
+ msecs_to_jiffies(SERVICE_CACHE_TIMEOUT));
+
goto unlock;
}