Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05558911 authored by Gustavo Padovan's avatar Gustavo Padovan
Browse files

Merge master.kernel.org:/pub/scm/linux/kernel/git/padovan/bluetooth-2.6

Conflicts:
	net/bluetooth/l2cap_core.c
parents e13e21dc 33060542
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -670,10 +670,10 @@ int hci_conn_security(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
		goto encrypt;

auth:
	if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend))
	if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend))
		return 0;

	hci_conn_auth(conn, sec_level, auth_type);
	if (!hci_conn_auth(conn, sec_level, auth_type))
		return 0;

encrypt:
+16 −7
Original line number Diff line number Diff line
@@ -4212,21 +4212,30 @@ static int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
			}
		} else if (chan->state == BT_CONNECT2) {
			struct l2cap_conn_rsp rsp;
			__u16 result;
			__u16 res, stat;

			if (!status) {
				if (bt_sk(sk)->defer_setup) {
					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);
				result = L2CAP_CR_SUCCESS;
					res = L2CAP_CR_SUCCESS;
					stat = L2CAP_CS_NO_INFO;
				}
			} else {
				l2cap_state_change(chan, BT_DISCONN);
				__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.dcid   = cpu_to_le16(chan->scid);
			rsp.result = cpu_to_le16(result);
			rsp.status = cpu_to_le16(L2CAP_CS_NO_INFO);
			rsp.result = cpu_to_le16(res);
			rsp.status = cpu_to_le16(stat);
			l2cap_send_cmd(conn, chan->ident, L2CAP_CONN_RSP,
							sizeof(rsp), &rsp);
		}