Bluetooth: fix not setting security level when creating a rfcomm session

This cause 'No Bonding' to be used if userspace has not yet been paired
with remote device since the l2cap socket used to create the rfcomm
session does not have any security level set.

Signed-off-by: Luiz Augusto von Dentz <luiz.dentz-von@nokia.com>
Acked-by: Ville Tervo <ville.tervo@nokia.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>

authored by Luiz Augusto von Dentz and committed by Gustavo F. Padovan 63ce0900 4f8b691c

+10 -3
+10 -3
net/bluetooth/rfcomm/core.c
··· 79 79 80 80 static void rfcomm_process_connect(struct rfcomm_session *s); 81 81 82 - static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err); 82 + static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, 83 + bdaddr_t *dst, 84 + u8 sec_level, 85 + int *err); 83 86 static struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst); 84 87 static void rfcomm_session_del(struct rfcomm_session *s); 85 88 ··· 404 401 405 402 s = rfcomm_session_get(src, dst); 406 403 if (!s) { 407 - s = rfcomm_session_create(src, dst, &err); 404 + s = rfcomm_session_create(src, dst, d->sec_level, &err); 408 405 if (!s) 409 406 return err; 410 407 } ··· 682 679 rfcomm_session_put(s); 683 680 } 684 681 685 - static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst, int *err) 682 + static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, 683 + bdaddr_t *dst, 684 + u8 sec_level, 685 + int *err) 686 686 { 687 687 struct rfcomm_session *s = NULL; 688 688 struct sockaddr_l2 addr; ··· 710 704 sk = sock->sk; 711 705 lock_sock(sk); 712 706 l2cap_pi(sk)->imtu = l2cap_mtu; 707 + l2cap_pi(sk)->sec_level = sec_level; 713 708 if (l2cap_ertm) 714 709 l2cap_pi(sk)->mode = L2CAP_MODE_ERTM; 715 710 release_sock(sk);