Merge master.kernel.org:/pub/scm/linux/kernel/git/padovan/bluetooth-2.6
Conflicts: net/bluetooth/l2cap_core.c
This commit is contained in:
@@ -670,11 +670,11 @@ int hci_conn_security(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
|
|||||||
goto encrypt;
|
goto encrypt;
|
||||||
|
|
||||||
auth:
|
auth:
|
||||||
if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend))
|
if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
hci_conn_auth(conn, sec_level, auth_type);
|
if (!hci_conn_auth(conn, sec_level, auth_type))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
encrypt:
|
encrypt:
|
||||||
if (conn->link_mode & HCI_LM_ENCRYPT)
|
if (conn->link_mode & HCI_LM_ENCRYPT)
|
||||||
|
@@ -4212,21 +4212,30 @@ static int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
|
|||||||
}
|
}
|
||||||
} else if (chan->state == BT_CONNECT2) {
|
} else if (chan->state == BT_CONNECT2) {
|
||||||
struct l2cap_conn_rsp rsp;
|
struct l2cap_conn_rsp rsp;
|
||||||
__u16 result;
|
__u16 res, stat;
|
||||||
|
|
||||||
if (!status) {
|
if (!status) {
|
||||||
l2cap_state_change(chan, BT_CONFIG);
|
if (bt_sk(sk)->defer_setup) {
|
||||||
result = L2CAP_CR_SUCCESS;
|
struct sock *parent = bt_sk(sk)->parent;
|
||||||
|
res = L2CAP_CR_PEND;
|
||||||
|
stat = L2CAP_CS_AUTHOR_PEND;
|
||||||
|
parent->sk_data_ready(parent, 0);
|
||||||
|
} else {
|
||||||
|
l2cap_state_change(chan, BT_CONFIG);
|
||||||
|
res = L2CAP_CR_SUCCESS;
|
||||||
|
stat = L2CAP_CS_NO_INFO;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
l2cap_state_change(chan, BT_DISCONN);
|
l2cap_state_change(chan, BT_DISCONN);
|
||||||
__set_chan_timer(chan, HZ / 10);
|
__set_chan_timer(chan, HZ / 10);
|
||||||
result = L2CAP_CR_SEC_BLOCK;
|
res = L2CAP_CR_SEC_BLOCK;
|
||||||
|
stat = L2CAP_CS_NO_INFO;
|
||||||
}
|
}
|
||||||
|
|
||||||
rsp.scid = cpu_to_le16(chan->dcid);
|
rsp.scid = cpu_to_le16(chan->dcid);
|
||||||
rsp.dcid = cpu_to_le16(chan->scid);
|
rsp.dcid = cpu_to_le16(chan->scid);
|
||||||
rsp.result = cpu_to_le16(result);
|
rsp.result = cpu_to_le16(res);
|
||||||
rsp.status = cpu_to_le16(L2CAP_CS_NO_INFO);
|
rsp.status = cpu_to_le16(stat);
|
||||||
l2cap_send_cmd(conn, chan->ident, L2CAP_CONN_RSP,
|
l2cap_send_cmd(conn, chan->ident, L2CAP_CONN_RSP,
|
||||||
sizeof(rsp), &rsp);
|
sizeof(rsp), &rsp);
|
||||||
}
|
}
|
||||||
@@ -4365,7 +4374,7 @@ static int l2cap_debugfs_show(struct seq_file *f, void *p)
|
|||||||
c->state, __le16_to_cpu(c->psm),
|
c->state, __le16_to_cpu(c->psm),
|
||||||
c->scid, c->dcid, c->imtu, c->omtu,
|
c->scid, c->dcid, c->imtu, c->omtu,
|
||||||
c->sec_level, c->mode);
|
c->sec_level, c->mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
read_unlock_bh(&chan_list_lock);
|
read_unlock_bh(&chan_list_lock);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user