diff options
Diffstat (limited to 'net/bluetooth/mgmt.c')
-rw-r--r-- | net/bluetooth/mgmt.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index fa9a58964278..4b1efedc18c5 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c | |||
@@ -615,19 +615,17 @@ static void service_cache_off(struct work_struct *work) | |||
615 | 615 | ||
616 | static void mgmt_init_hdev(struct sock *sk, struct hci_dev *hdev) | 616 | static void mgmt_init_hdev(struct sock *sk, struct hci_dev *hdev) |
617 | { | 617 | { |
618 | if (!test_and_clear_bit(HCI_PI_MGMT_INIT, &hci_pi(sk)->flags)) | 618 | if (test_and_set_bit(HCI_MGMT, &hdev->dev_flags)) |
619 | return; | 619 | return; |
620 | 620 | ||
621 | if (!test_and_set_bit(HCI_MGMT, &hdev->dev_flags)) { | 621 | INIT_DELAYED_WORK(&hdev->service_cache, service_cache_off); |
622 | INIT_DELAYED_WORK(&hdev->service_cache, service_cache_off); | ||
623 | 622 | ||
624 | /* Non-mgmt controlled devices get this bit set | 623 | /* Non-mgmt controlled devices get this bit set |
625 | * implicitly so that pairing works for them, however | 624 | * implicitly so that pairing works for them, however |
626 | * for mgmt we require user-space to explicitly enable | 625 | * for mgmt we require user-space to explicitly enable |
627 | * it | 626 | * it |
628 | */ | 627 | */ |
629 | clear_bit(HCI_PAIRABLE, &hdev->dev_flags); | 628 | clear_bit(HCI_PAIRABLE, &hdev->dev_flags); |
630 | } | ||
631 | } | 629 | } |
632 | 630 | ||
633 | static int read_controller_info(struct sock *sk, struct hci_dev *hdev, | 631 | static int read_controller_info(struct sock *sk, struct hci_dev *hdev, |