diff options
author | Seung-Woo Kim <sw0312.kim@samsung.com> | 2013-11-05 02:02:24 -0500 |
---|---|---|
committer | Gustavo Padovan <gustavo.padovan@collabora.co.uk> | 2013-11-13 08:36:53 -0500 |
commit | c507f138fc7c2025d75b65018810dc0561d0bdb9 (patch) | |
tree | 07f863de4529399c0a0796637f06e5948518a5cc /net | |
parent | 60c7a3c9c77239d5a7430c42a2c796881716cca1 (diff) |
Bluetooth: Fix RFCOMM bind fail for L2CAP sock
L2CAP socket bind checks its bdaddr type but RFCOMM kernel thread
does not assign proper bdaddr type for L2CAP sock. This can cause
that RFCOMM failure.
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/bluetooth/rfcomm/core.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c index ca957d34b0c8..292fa64a19dd 100644 --- a/net/bluetooth/rfcomm/core.c +++ b/net/bluetooth/rfcomm/core.c | |||
@@ -694,6 +694,7 @@ static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, | |||
694 | addr.l2_family = AF_BLUETOOTH; | 694 | addr.l2_family = AF_BLUETOOTH; |
695 | addr.l2_psm = 0; | 695 | addr.l2_psm = 0; |
696 | addr.l2_cid = 0; | 696 | addr.l2_cid = 0; |
697 | addr.l2_bdaddr_type = BDADDR_BREDR; | ||
697 | *err = kernel_bind(sock, (struct sockaddr *) &addr, sizeof(addr)); | 698 | *err = kernel_bind(sock, (struct sockaddr *) &addr, sizeof(addr)); |
698 | if (*err < 0) | 699 | if (*err < 0) |
699 | goto failed; | 700 | goto failed; |
@@ -1983,6 +1984,7 @@ static int rfcomm_add_listener(bdaddr_t *ba) | |||
1983 | addr.l2_family = AF_BLUETOOTH; | 1984 | addr.l2_family = AF_BLUETOOTH; |
1984 | addr.l2_psm = __constant_cpu_to_le16(RFCOMM_PSM); | 1985 | addr.l2_psm = __constant_cpu_to_le16(RFCOMM_PSM); |
1985 | addr.l2_cid = 0; | 1986 | addr.l2_cid = 0; |
1987 | addr.l2_bdaddr_type = BDADDR_BREDR; | ||
1986 | err = kernel_bind(sock, (struct sockaddr *) &addr, sizeof(addr)); | 1988 | err = kernel_bind(sock, (struct sockaddr *) &addr, sizeof(addr)); |
1987 | if (err < 0) { | 1989 | if (err < 0) { |
1988 | BT_ERR("Bind failed %d", err); | 1990 | BT_ERR("Bind failed %d", err); |