diff mbox series

[3/4] Bluetooth: Fix bogus check for re-auth no supported with non-ssp

Message ID 20200519202519.219335-3-luiz.dentz@gmail.com (mailing list archive)
State New, archived
Delegated to: Marcel Holtmann
Headers show
Series [1/4] Bluetooth: Disconnect if E0 is used for Level 4 | expand

Commit Message

Luiz Augusto von Dentz May 19, 2020, 8:25 p.m. UTC
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

This reverts 19f8def031bfa50c579149b200bfeeb919727b27
"Bluetooth: Fix auth_complete_evt for legacy units" which seems to be
working around a bug on a broken controller rather then any limitation
imposed by the Bluetooth spec, in fact if there ws not possible to
re-auth the command shall fail not succeed.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
 net/bluetooth/hci_event.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

Comments

Marcel Holtmann May 20, 2020, 2:25 p.m. UTC | #1
Hi Luiz,

> This reverts 19f8def031bfa50c579149b200bfeeb919727b27
> "Bluetooth: Fix auth_complete_evt for legacy units" which seems to be
> working around a bug on a broken controller rather then any limitation
> imposed by the Bluetooth spec, in fact if there ws not possible to
> re-auth the command shall fail not succeed.
> 
> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> ---
> net/bluetooth/hci_event.c | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)
> 
> diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
> index dc1cc3c4348c..8c9051ffa665 100644
> --- a/net/bluetooth/hci_event.c
> +++ b/net/bluetooth/hci_event.c
> @@ -2869,14 +2869,8 @@ static void hci_auth_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
> 
> 	if (!ev->status) {
> 		clear_bit(HCI_CONN_AUTH_FAILURE, &conn->flags);
> -
> -		if (!hci_conn_ssp_enabled(conn) &&
> -		    test_bit(HCI_CONN_REAUTH_PEND, &conn->flags)) {
> -			bt_dev_info(hdev, "re-auth of legacy device is not possible.");
> -		} else {
> -			set_bit(HCI_CONN_AUTH, &conn->flags);
> -			conn->sec_level = conn->pending_sec_level;
> -		}
> +		set_bit(HCI_CONN_AUTH, &conn->flags);
> +		conn->sec_level = conn->pending_sec_level;
> 	} else {
> 		if (ev->status == HCI_ERROR_PIN_OR_KEY_MISSING)
> 			set_bit(HCI_CONN_AUTH_FAILURE, &conn->flags);

wouldn’t we now also remove HCI_CONN_REAUTH_PEND flag?

Regards

Marcel
Luiz Augusto von Dentz May 20, 2020, 4:12 p.m. UTC | #2
Hi Marcel,

On Wed, May 20, 2020 at 7:25 AM Marcel Holtmann <marcel@holtmann.org> wrote:
>
> Hi Luiz,
>
> > This reverts 19f8def031bfa50c579149b200bfeeb919727b27
> > "Bluetooth: Fix auth_complete_evt for legacy units" which seems to be
> > working around a bug on a broken controller rather then any limitation
> > imposed by the Bluetooth spec, in fact if there ws not possible to
> > re-auth the command shall fail not succeed.
> >
> > Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> > ---
> > net/bluetooth/hci_event.c | 10 ++--------
> > 1 file changed, 2 insertions(+), 8 deletions(-)
> >
> > diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
> > index dc1cc3c4348c..8c9051ffa665 100644
> > --- a/net/bluetooth/hci_event.c
> > +++ b/net/bluetooth/hci_event.c
> > @@ -2869,14 +2869,8 @@ static void hci_auth_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
> >
> >       if (!ev->status) {
> >               clear_bit(HCI_CONN_AUTH_FAILURE, &conn->flags);
> > -
> > -             if (!hci_conn_ssp_enabled(conn) &&
> > -                 test_bit(HCI_CONN_REAUTH_PEND, &conn->flags)) {
> > -                     bt_dev_info(hdev, "re-auth of legacy device is not possible.");
> > -             } else {
> > -                     set_bit(HCI_CONN_AUTH, &conn->flags);
> > -                     conn->sec_level = conn->pending_sec_level;
> > -             }
> > +             set_bit(HCI_CONN_AUTH, &conn->flags);
> > +             conn->sec_level = conn->pending_sec_level;
> >       } else {
> >               if (ev->status == HCI_ERROR_PIN_OR_KEY_MISSING)
> >                       set_bit(HCI_CONN_AUTH_FAILURE, &conn->flags);
>
> wouldn’t we now also remove HCI_CONN_REAUTH_PEND flag?

Yep, it doesn't seem there is any other user of HCI_CONN_REAUTH_PEND,
not sure if we wouldn't need this in the future though if we do want
to check if reauth was triggered.

> Regards
>
> Marcel
>
diff mbox series

Patch

diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index dc1cc3c4348c..8c9051ffa665 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -2869,14 +2869,8 @@  static void hci_auth_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
 
 	if (!ev->status) {
 		clear_bit(HCI_CONN_AUTH_FAILURE, &conn->flags);
-
-		if (!hci_conn_ssp_enabled(conn) &&
-		    test_bit(HCI_CONN_REAUTH_PEND, &conn->flags)) {
-			bt_dev_info(hdev, "re-auth of legacy device is not possible.");
-		} else {
-			set_bit(HCI_CONN_AUTH, &conn->flags);
-			conn->sec_level = conn->pending_sec_level;
-		}
+		set_bit(HCI_CONN_AUTH, &conn->flags);
+		conn->sec_level = conn->pending_sec_level;
 	} else {
 		if (ev->status == HCI_ERROR_PIN_OR_KEY_MISSING)
 			set_bit(HCI_CONN_AUTH_FAILURE, &conn->flags);