Message ID | CACVXFVMm+Z1PT9VYBD4wmc3YW-pfddyGo6qqurYSCPfxjjNj9g@mail.gmail.com |
---|---|
State | New |
Headers | show |
On Mon, Mar 12, 2012 at 03:48:23PM +0800, 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: [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/791019 Looks like the BugLink is pointing to the wrong bug. > Upstream discusstion: http://marc.info/?t=131292188200002&r=1&w=2 > > 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. > --- > 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); > -- > 1.7.9 > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team >
On Mon, Mar 12, 2012 at 8:57 PM, Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com> wrote: > On Mon, Mar 12, 2012 at 03:48:23PM +0800, 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: [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/791019 > > Looks like the BugLink is pointing to the wrong bug. Sorry for the copy & past, :-( Will send a new one... > >> Upstream discusstion: http://marc.info/?t=131292188200002&r=1&w=2 >> >> 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. >> --- >> 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); >> -- >> 1.7.9 >> >> -- >> kernel-team mailing list >> kernel-team@lists.ubuntu.com >> https://lists.ubuntu.com/mailman/listinfo/kernel-team >> > > -- > []'s > Herton
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,