Patchwork [Oneiric,SRU] Bluetooth: Fix l2cap conn failures for ssp devices

login
register
mail settings
Submitter Ming Lei
Date March 19, 2012, 4:34 a.m.
Message ID <CACVXFVNt2Png0a9qieoUzZ9o=wDw+SkR=T2XFcSVdgDKYZmhFw@mail.gmail.com>
Download mbox | patch
Permalink /patch/147462/
State New
Headers show

Comments

Ming Lei - March 19, 2012, 4:34 a.m.
From 18daf1644e634bae951a6e3d4d19d89170209762 Mon Sep 17 00:00:00 2001
From: Peter Hurley <peter@hurleysoftware.com>
Date: Fri, 13 Jan 2012 15:11:30 +0100
Subject: [Oneiric SRU][PATCH] Bluetooth: Fix l2cap conn failures for ssp devices

Commit 330605423c fixed l2cap conn establishment for non-ssp remote
devices by not setting HCI_CONN_ENCRYPT_PEND every time conn security
is tested (which was always returning failure on any subsequent
security checks).

However, this broke l2cap conn establishment for ssp remote devices
when an ACL link was already established at SDP-level security. This
fix ensures that encryption must be pending whenever authentication
is also pending.

BugLink: http://bugs.launchpad.net/bugs/872044
Upstream discusstion: http://marc.info/?t=131292188200002&r=1&w=2

Impact:
	cannot send files to other BT device
Fix:
	can send files to other BT device


Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Tested-by: Daniel Wagner <daniel.wagner@bmw-carit.de>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
---
This wasn't cc:ed stable@kernel.org, but was merged to 3.3-rc6 as
commit 18daf1644e634bae951a6e3d4d19d89170209762(Bluetooth: Fix l2cap
conn failures for ssp devices).
---
 net/bluetooth/hci_conn.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

 							sizeof(cp), &cp);
Stefan Bader - March 19, 2012, 3:02 p.m.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

On 19.03.2012 05:34, Ming Lei wrote:
> From 18daf1644e634bae951a6e3d4d19d89170209762 Mon Sep 17 00:00:00 2001 
> From: Peter Hurley <peter@hurleysoftware.com> Date: Fri, 13 Jan 2012
> 15:11:30 +0100 Subject: [Oneiric SRU][PATCH] Bluetooth: Fix l2cap conn
> failures for ssp devices
> 
> Commit 330605423c fixed l2cap conn establishment for non-ssp remote devices
> by not setting HCI_CONN_ENCRYPT_PEND every time conn security is tested
> (which was always returning failure on any subsequent security checks).
> 
> However, this broke l2cap conn establishment for ssp remote devices when an
> ACL link was already established at SDP-level security. This fix ensures
> that encryption must be pending whenever authentication is also pending.
> 
> BugLink: http://bugs.launchpad.net/bugs/872044 Upstream discusstion:
> http://marc.info/?t=131292188200002&r=1&w=2
> 

I would not put the SRU justification into the commit message.

> Impact: cannot send files to other BT device Fix: can send files to other
> BT device
> 
> 
> Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Tested-by: Daniel
> Wagner <daniel.wagner@bmw-carit.de> Acked-by: Marcel Holtmann
> <marcel@holtmann.org> Signed-off-by: Johan Hedberg
> <johan.hedberg@intel.com>

But add your s-o-b and use the generic cherry-pick format if it is one:

(cherry-picked from 18daf1644e634bae951a6e3d4d19d89170209762 upstream)
Signed-off-by: Ming Lei <ming.lei@canonical.com>

Otherwise looks ok and we already have picked and applied it for Precise.

Acked-by: Stefan Bader <stefan.bader@canonical.com>

> --- This wasn't cc:ed stable@kernel.org, but was merged to 3.3-rc6 as 
> commit 18daf1644e634bae951a6e3d4d19d89170209762(Bluetooth: Fix l2cap conn
> failures for ssp devices). --- net/bluetooth/hci_conn.c |    4 ++++ 1 files
> changed, 4 insertions(+), 0 deletions(-)
> 
> diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c index
> 3db4324..07bc69e 100644 --- a/net/bluetooth/hci_conn.c +++
> b/net/bluetooth/hci_conn.c @@ -635,6 +635,10 @@ static int
> hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
> 
> if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) { struct
> hci_cp_auth_requested cp; + +		/* encrypt must be pending if auth is also
> pending */ +		set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend); + cp.handle =
> cpu_to_le16(conn->handle); hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED, 
> sizeof(cp), &cp);

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBCgAGBQJPZ0qAAAoJEOhnXe7L7s6j3V8QALvfq9TlvzxHJXIgWK/0hG9k
SQ1reR7m2y0r+2tx+0WX9tQCiEuAl+ibbAV8TIEfsEkoGKj1+UJQAqk+YlRbEuJ1
eRwp6+S/zpHF0yFcBGQcUesMGptg+Isa6064n56+gcnHJHWlez//1DRcTuu3w66X
Y3CGSJzHYLhW0VQVm/Zht0eXRpAa4tLKeHG+vit3Y8Rr5XGr0YyUj/uE4u++Unes
0z7tku77w5ZfrA8NnY7kiY9II13o/ctL82vEq9y73JS5fqk60exnY0yJ/paKaCEU
2W/5H+MIibjnyt7WykGTPTIMK9InF1GpZyiK4Y9414MBU4Dkx+nk4TD8cu+0GiFi
VwI8oJwEJjMbjcYfdJX0VjveE2FqTIVFax7E4xCPuraWWwvlu55BHwOU+aC9/Lrb
TElQK19WC0Ugy2PciSQ6DkX22/iIFDLalZ1+sDx0P2jMR70R5BZJlHIPPwJa5FcY
RTC7ROiy3yaPc/GSWO4L6WfqYGS43uNzSTM4igmym17fB9viqM8eWz4p4V9OmjOj
sr9qnXRrohH2iVfI1OozqHN9/qCW1B2rtPXbi6bmFyEiHNdDEBAj3+k46ppj6mBl
tR+f0bhwZQ+lCHsBxxcGDkDD6K3u361VnNrANYN1HjNnTpc4ysZ+i1bc0F10Mx3Y
neg3hoVsxFfB8pbp1Ftv
=7B2W
-----END PGP SIGNATURE-----
Stefan Bader - March 19, 2012, 3:04 p.m.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

On 19.03.2012 16:02, Stefan Bader wrote:
> On 19.03.2012 05:34, Ming Lei wrote:
>> From 18daf1644e634bae951a6e3d4d19d89170209762 Mon Sep 17 00:00:00 2001 
>> From: Peter Hurley <peter@hurleysoftware.com> Date: Fri, 13 Jan 2012 
>> 15:11:30 +0100 Subject: [Oneiric SRU][PATCH] Bluetooth: Fix l2cap conn 
>> failures for ssp devices
> 
>> Commit 330605423c fixed l2cap conn establishment for non-ssp remote
>> devices by not setting HCI_CONN_ENCRYPT_PEND every time conn security is
>> tested (which was always returning failure on any subsequent security
>> checks).
> 
>> However, this broke l2cap conn establishment for ssp remote devices when
>> an ACL link was already established at SDP-level security. This fix
>> ensures that encryption must be pending whenever authentication is also
>> pending.
> 
>> BugLink: http://bugs.launchpad.net/bugs/872044 Upstream discusstion: 
>> http://marc.info/?t=131292188200002&r=1&w=2
> 
> 
> I would not put the SRU justification into the commit message.
> 
>> Impact: cannot send files to other BT device Fix: can send files to
>> other BT device
> 
> 
>> Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Tested-by: Daniel 
>> Wagner <daniel.wagner@bmw-carit.de> Acked-by: Marcel Holtmann 
>> <marcel@holtmann.org> Signed-off-by: Johan Hedberg 
>> <johan.hedberg@intel.com>
> 
> But add your s-o-b and use the generic cherry-pick format if it is one:
> 
> (cherry-picked from 18daf1644e634bae951a6e3d4d19d89170209762 upstream) 
> Signed-off-by: Ming Lei <ming.lei@canonical.com>
> 
> Otherwise looks ok and we already have picked and applied it for Precise.
> 
> Acked-by: Stefan Bader <stefan.bader@canonical.com>
> 
>> --- This wasn't cc:ed stable@kernel.org, but was merged to 3.3-rc6 as 
>> commit 18daf1644e634bae951a6e3d4d19d89170209762(Bluetooth: Fix l2cap
>> conn failures for ssp devices). --- net/bluetooth/hci_conn.c |    4 ++++
>> 1 files changed, 4 insertions(+), 0 deletions(-)
> 
>> diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c index 
>> 3db4324..07bc69e 100644 --- a/net/bluetooth/hci_conn.c +++ 
>> b/net/bluetooth/hci_conn.c @@ -635,6 +635,10 @@ static int 
>> hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
> 
>> if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) { struct 
>> hci_cp_auth_requested cp; + +		/* encrypt must be pending if auth is
>> also pending */ +		set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend); +
>> cp.handle = cpu_to_le16(conn->handle); hci_send_cmd(conn->hdev,
>> HCI_OP_AUTH_REQUESTED, sizeof(cp), &cp);
> 
> 

Btw, has this been pushed/persuaded to become an upstream stable change?

- -Stefan
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBCgAGBQJPZ0sCAAoJEOhnXe7L7s6jcFkQALOfHl45LF8yvv89WPpU1Mtn
07Ba6DtSS0UIZLlbWdO1OxSc0SEOs+Mlr1CmgSJ6694PfB1UvgcNemBLsS/sWyKw
/bCHT9EyyFIg/AK7xIO/klEOWKH90z0VbHdNRn1p/yjY/v+GKzpy3NyRYDBHYt5Y
Z7o/Wpb2C+0xrj8PGmh9YM8fmjh8rhFHz/m+kHBicAqNaKf1B2DeT5Yvqjdm7BMB
eJ9ZLL4RW0D8hVsleSad9bRPQA/ETajGG9tWZ+FrwePqnq+bph71j1NlGjfGb2tX
4LRZC8f3ffSCVKJqDur/cdMaR8G2LZpmpnOuwf+CeO6S8y9Ms6ttJVBgW4epD2+p
26mJEHCrtFo/UcxL/nd3+X6wr8gM808cRF49Oxr3ciLI6udXZjRwljLNvCm0VSCL
Wg4gG/1f7+fBwrmJe6MxQsfLNFFhQu/SRVEaB5vVMfkz+vrvrw4D8mrNBnA+ETcE
LMj/5+HHhzB3/feHkL+3uxqtizomEAUJYB2RjyX50UYVRCPwIAgONByY5LCWtlaV
zq4uf+hVBcnlgOBgY71FghZ3suABZhkl2yj1JuYXDnS2wJpyghmN3bUokF3SzK5r
egJrOO3XVVulKLILOmh1PmjxvMXXwvuM4bZhEGTiFSyZg85PIHS/OmRrSi0n8nOl
Kz4vaX5WaCWr58Q7ODNT
=rH2A
-----END PGP SIGNATURE-----
Tim Gardner - March 19, 2012, 3:16 p.m.
Applied per Stefan's comments

Patch

diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 3db4324..07bc69e 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -635,6 +635,10 @@  static int hci_conn_auth(struct hci_conn *conn,
__u8 sec_level, __u8 auth_type)

 	if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) {
 		struct hci_cp_auth_requested cp;
+
+		/* encrypt must be pending if auth is also pending */
+		set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend);
+
 		cp.handle = cpu_to_le16(conn->handle);
 		hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED,