diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/bluetooth/mgmt.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index 686bda76fcad..1d608ca0b0ee 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c | |||
@@ -1143,15 +1143,13 @@ static int set_discoverable(struct sock *sk, struct hci_dev *hdev, void *data, | |||
1143 | } | 1143 | } |
1144 | 1144 | ||
1145 | if (!!cp->val == test_bit(HCI_DISCOVERABLE, &hdev->dev_flags)) { | 1145 | if (!!cp->val == test_bit(HCI_DISCOVERABLE, &hdev->dev_flags)) { |
1146 | if (hdev->discov_timeout > 0) { | 1146 | cancel_delayed_work(&hdev->discov_off); |
1147 | cancel_delayed_work(&hdev->discov_off); | 1147 | hdev->discov_timeout = timeout; |
1148 | hdev->discov_timeout = 0; | ||
1149 | } | ||
1150 | 1148 | ||
1151 | if (cp->val && timeout > 0) { | 1149 | if (cp->val && hdev->discov_timeout > 0) { |
1152 | hdev->discov_timeout = timeout; | 1150 | int to = msecs_to_jiffies(hdev->discov_timeout * 1000); |
1153 | queue_delayed_work(hdev->workqueue, &hdev->discov_off, | 1151 | queue_delayed_work(hdev->workqueue, &hdev->discov_off, |
1154 | msecs_to_jiffies(hdev->discov_timeout * 1000)); | 1152 | to); |
1155 | } | 1153 | } |
1156 | 1154 | ||
1157 | err = send_settings_rsp(sk, MGMT_OP_SET_DISCOVERABLE, hdev); | 1155 | err = send_settings_rsp(sk, MGMT_OP_SET_DISCOVERABLE, hdev); |