|
@@ -1018,10 +1018,10 @@ static void l2cap_conn_del(struct hci_conn *hcon, int err)
|
|
|
hci_chan_del(conn->hchan);
|
|
|
|
|
|
if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT)
|
|
|
- __cancel_delayed_work(&conn->info_timer);
|
|
|
+ cancel_delayed_work_sync(&conn->info_timer);
|
|
|
|
|
|
if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &hcon->pend)) {
|
|
|
- __cancel_delayed_work(&conn->security_timer);
|
|
|
+ cancel_delayed_work_sync(&conn->security_timer);
|
|
|
smp_chan_destroy(conn);
|
|
|
}
|
|
|
|
|
@@ -1120,7 +1120,7 @@ static struct l2cap_chan *l2cap_global_chan_by_psm(int state, __le16 psm, bdaddr
|
|
|
return c1;
|
|
|
}
|
|
|
|
|
|
-inline int l2cap_chan_connect(struct l2cap_chan *chan, __le16 psm, u16 cid, bdaddr_t *dst)
|
|
|
+int l2cap_chan_connect(struct l2cap_chan *chan, __le16 psm, u16 cid, bdaddr_t *dst)
|
|
|
{
|
|
|
struct sock *sk = chan->sk;
|
|
|
bdaddr_t *src = &bt_sk(sk)->src;
|
|
@@ -2574,7 +2574,7 @@ static inline int l2cap_command_rej(struct l2cap_conn *conn, struct l2cap_cmd_hd
|
|
|
|
|
|
if ((conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT) &&
|
|
|
cmd->ident == conn->info_ident) {
|
|
|
- __cancel_delayed_work(&conn->info_timer);
|
|
|
+ cancel_delayed_work(&conn->info_timer);
|
|
|
|
|
|
conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
|
|
|
conn->info_ident = 0;
|
|
@@ -2970,7 +2970,8 @@ static inline int l2cap_config_rsp(struct l2cap_conn *conn, struct l2cap_cmd_hdr
|
|
|
|
|
|
default:
|
|
|
sk->sk_err = ECONNRESET;
|
|
|
- __set_chan_timer(chan, L2CAP_DISC_REJ_TIMEOUT);
|
|
|
+ __set_chan_timer(chan,
|
|
|
+ msecs_to_jiffies(L2CAP_DISC_REJ_TIMEOUT));
|
|
|
l2cap_send_disconn_req(conn, chan, ECONNRESET);
|
|
|
goto done;
|
|
|
}
|
|
@@ -3120,7 +3121,7 @@ static inline int l2cap_information_rsp(struct l2cap_conn *conn, struct l2cap_cm
|
|
|
conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_DONE)
|
|
|
return 0;
|
|
|
|
|
|
- __cancel_delayed_work(&conn->info_timer);
|
|
|
+ cancel_delayed_work(&conn->info_timer);
|
|
|
|
|
|
if (result != L2CAP_IR_SUCCESS) {
|
|
|
conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
|
|
@@ -4478,7 +4479,8 @@ static inline void l2cap_check_encryption(struct l2cap_chan *chan, u8 encrypt)
|
|
|
if (encrypt == 0x00) {
|
|
|
if (chan->sec_level == BT_SECURITY_MEDIUM) {
|
|
|
__clear_chan_timer(chan);
|
|
|
- __set_chan_timer(chan, L2CAP_ENC_TIMEOUT);
|
|
|
+ __set_chan_timer(chan,
|
|
|
+ msecs_to_jiffies(L2CAP_ENC_TIMEOUT));
|
|
|
} else if (chan->sec_level == BT_SECURITY_HIGH)
|
|
|
l2cap_chan_close(chan, ECONNREFUSED);
|
|
|
} else {
|
|
@@ -4499,7 +4501,7 @@ int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
|
|
|
|
|
|
if (hcon->type == LE_LINK) {
|
|
|
smp_distribute_keys(conn, 0);
|
|
|
- __cancel_delayed_work(&conn->security_timer);
|
|
|
+ cancel_delayed_work(&conn->security_timer);
|
|
|
}
|
|
|
|
|
|
rcu_read_lock();
|
|
@@ -4546,7 +4548,8 @@ int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
|
|
|
L2CAP_CONN_REQ, sizeof(req), &req);
|
|
|
} else {
|
|
|
__clear_chan_timer(chan);
|
|
|
- __set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
|
|
|
+ __set_chan_timer(chan,
|
|
|
+ msecs_to_jiffies(L2CAP_DISC_TIMEOUT));
|
|
|
}
|
|
|
} else if (chan->state == BT_CONNECT2) {
|
|
|
struct l2cap_conn_rsp rsp;
|
|
@@ -4566,7 +4569,8 @@ int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
|
|
|
}
|
|
|
} else {
|
|
|
l2cap_state_change(chan, BT_DISCONN);
|
|
|
- __set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
|
|
|
+ __set_chan_timer(chan,
|
|
|
+ msecs_to_jiffies(L2CAP_DISC_TIMEOUT));
|
|
|
res = L2CAP_CR_SEC_BLOCK;
|
|
|
stat = L2CAP_CS_NO_INFO;
|
|
|
}
|