diff options
-rw-r--r-- | net/bluetooth/mgmt.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index 6df4af6e99c..f7e111f3043 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c | |||
@@ -900,6 +900,17 @@ static int set_discoverable(struct sock *sk, u16 index, void *data, u16 len) | |||
900 | } | 900 | } |
901 | 901 | ||
902 | if (!!cp->val == test_bit(HCI_DISCOVERABLE, &hdev->dev_flags)) { | 902 | if (!!cp->val == test_bit(HCI_DISCOVERABLE, &hdev->dev_flags)) { |
903 | if (hdev->discov_timeout > 0) { | ||
904 | cancel_delayed_work(&hdev->discov_off); | ||
905 | hdev->discov_timeout = 0; | ||
906 | } | ||
907 | |||
908 | if (cp->val && timeout > 0) { | ||
909 | hdev->discov_timeout = timeout; | ||
910 | queue_delayed_work(hdev->workqueue, &hdev->discov_off, | ||
911 | msecs_to_jiffies(hdev->discov_timeout * 1000)); | ||
912 | } | ||
913 | |||
903 | err = send_settings_rsp(sk, MGMT_OP_SET_DISCOVERABLE, hdev); | 914 | err = send_settings_rsp(sk, MGMT_OP_SET_DISCOVERABLE, hdev); |
904 | goto failed; | 915 | goto failed; |
905 | } | 916 | } |