diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index 1e90a143028..ed5f94ec78c 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c @@ -505,8 +505,10 @@ static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, ch memset(&sec, 0, sizeof(sec)); sec.level = l2cap_pi(sk)->sec_level; - if (sk->sk_state == BT_CONNECTED) + if (sk->sk_state == BT_CONNECTED) { sec.key_size = l2cap_pi(sk)->conn->hcon->enc_key_size; + sec.level = l2cap_pi(sk)->conn->hcon->sec_level; + } len = min_t(unsigned int, len, sizeof(sec)); if (copy_to_user(optval, (char *) &sec, len)) diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index 2484a9a4f55..31fc4dcf572 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c @@ -717,6 +717,7 @@ invalid_key: memset(&cp, 0, sizeof(cp)); build_pairing_cmd(conn, &cp, NULL, rp->auth_req); + hcon->pending_sec_level = authreq_to_seclevel(rp->auth_req); hcon->preq[0] = SMP_CMD_PAIRING_REQ; memcpy(&hcon->preq[1], &cp, sizeof(cp));