|
@@ -1299,20 +1299,16 @@ static void l2cap_conn_start(struct l2cap_conn *conn)
|
|
|
rsp.dcid = cpu_to_le16(chan->scid);
|
|
|
|
|
|
if (l2cap_chan_check_security(chan)) {
|
|
|
- struct sock *sk = chan->sk;
|
|
|
-
|
|
|
- lock_sock(sk);
|
|
|
if (test_bit(FLAG_DEFER_SETUP, &chan->flags)) {
|
|
|
rsp.result = __constant_cpu_to_le16(L2CAP_CR_PEND);
|
|
|
rsp.status = __constant_cpu_to_le16(L2CAP_CS_AUTHOR_PEND);
|
|
|
chan->ops->defer(chan);
|
|
|
|
|
|
} else {
|
|
|
- __l2cap_state_change(chan, BT_CONFIG);
|
|
|
+ l2cap_state_change(chan, BT_CONFIG);
|
|
|
rsp.result = __constant_cpu_to_le16(L2CAP_CR_SUCCESS);
|
|
|
rsp.status = __constant_cpu_to_le16(L2CAP_CS_NO_INFO);
|
|
|
}
|
|
|
- release_sock(sk);
|
|
|
} else {
|
|
|
rsp.result = __constant_cpu_to_le16(L2CAP_CR_PEND);
|
|
|
rsp.status = __constant_cpu_to_le16(L2CAP_CS_AUTHEN_PEND);
|
|
@@ -6643,31 +6639,26 @@ int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
|
|
|
__set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
|
|
|
}
|
|
|
} else if (chan->state == BT_CONNECT2) {
|
|
|
- struct sock *sk = chan->sk;
|
|
|
struct l2cap_conn_rsp rsp;
|
|
|
__u16 res, stat;
|
|
|
|
|
|
- lock_sock(sk);
|
|
|
-
|
|
|
if (!status) {
|
|
|
if (test_bit(FLAG_DEFER_SETUP, &chan->flags)) {
|
|
|
res = L2CAP_CR_PEND;
|
|
|
stat = L2CAP_CS_AUTHOR_PEND;
|
|
|
chan->ops->defer(chan);
|
|
|
} else {
|
|
|
- __l2cap_state_change(chan, BT_CONFIG);
|
|
|
+ l2cap_state_change(chan, BT_CONFIG);
|
|
|
res = L2CAP_CR_SUCCESS;
|
|
|
stat = L2CAP_CS_NO_INFO;
|
|
|
}
|
|
|
} else {
|
|
|
- __l2cap_state_change(chan, BT_DISCONN);
|
|
|
+ l2cap_state_change(chan, BT_DISCONN);
|
|
|
__set_chan_timer(chan, L2CAP_DISC_TIMEOUT);
|
|
|
res = L2CAP_CR_SEC_BLOCK;
|
|
|
stat = L2CAP_CS_NO_INFO;
|
|
|
}
|
|
|
|
|
|
- release_sock(sk);
|
|
|
-
|
|
|
rsp.scid = cpu_to_le16(chan->dcid);
|
|
|
rsp.dcid = cpu_to_le16(chan->scid);
|
|
|
rsp.result = cpu_to_le16(res);
|