mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
Bluetooth: L2CAP: remove conditional locking from l2cap_connect()
Context analysis does not understand conditional locking. Restructure l2cap_connect() by removing conditional locking at the cost of some code duplication, so that static analysis can see its content. Signed-off-by: Pauli Virtanen <pav@iki.fi> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This commit is contained in:
parent
aba67d585b
commit
6098ed784e
|
|
@ -4174,7 +4174,6 @@ static struct l2cap_chan *l2cap_new_connection(struct l2cap_conn *conn,
|
|||
static void l2cap_connect(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd,
|
||||
u8 *data, u8 rsp_code)
|
||||
__must_hold(&conn->lock)
|
||||
__context_unsafe(/* conditional locking */)
|
||||
{
|
||||
struct l2cap_conn_req *req = (struct l2cap_conn_req *) data;
|
||||
struct l2cap_conn_rsp rsp;
|
||||
|
|
@ -4191,7 +4190,13 @@ static void l2cap_connect(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd,
|
|||
&conn->hcon->dst, ACL_LINK);
|
||||
if (!pchan) {
|
||||
result = L2CAP_CR_BAD_PSM;
|
||||
goto response;
|
||||
|
||||
rsp.scid = cpu_to_le16(scid);
|
||||
rsp.dcid = cpu_to_le16(dcid);
|
||||
rsp.result = cpu_to_le16(result);
|
||||
rsp.status = cpu_to_le16(status);
|
||||
l2cap_send_cmd(conn, cmd->ident, rsp_code, sizeof(rsp), &rsp);
|
||||
return;
|
||||
}
|
||||
|
||||
l2cap_chan_lock(pchan);
|
||||
|
|
@ -4273,9 +4278,6 @@ static void l2cap_connect(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd,
|
|||
rsp.status = cpu_to_le16(status);
|
||||
l2cap_send_cmd(conn, cmd->ident, rsp_code, sizeof(rsp), &rsp);
|
||||
|
||||
if (!pchan)
|
||||
return;
|
||||
|
||||
if (result == L2CAP_CR_PEND && status == L2CAP_CS_NO_INFO) {
|
||||
struct l2cap_info_req info;
|
||||
info.type = cpu_to_le16(L2CAP_IT_FEAT_MASK);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user