Hi Patrick, On Wed, Jul 15, 2020 at 10:45 AM Patrick Steinhardt <ps@xxxxxx> wrote: > > Starting with the upgrade to v5.8-rc3, I've noticed I wasn't able to > connect to my Bluetooth headset properly anymore. While connecting to > the device would eventually succeed, bluetoothd seemed to be confused > about the current connection state where the state was flapping hence > and forth. Bisecting this issue led to commit 3ca44c16b0dc (Bluetooth: > Consolidate encryption handling in hci_encrypt_cfm, 2020-05-19), which > refactored `hci_encrypt_cfm` to also handle updating the connection > state. > > The commit in question changed the code to call `hci_connect_cfm` inside > `hci_encrypt_cfm` and to change the connection state. But with the > conversion, we now only update the connection state if a status was set > already. In fact, the reverse should be true: the status should be > updated if no status is yet set. So let's fix the isuse by reversing the > condition. > > Fixes: 3ca44c16b0dc ("Bluetooth: Consolidate encryption handling in hci_encrypt_cfm") > Signed-off-by: Patrick Steinhardt <ps@xxxxxx> Acked-by: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> > --- > include/net/bluetooth/hci_core.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h > index cdd4f1db8670..da3728871e85 100644 > --- a/include/net/bluetooth/hci_core.h > +++ b/include/net/bluetooth/hci_core.h > @@ -1387,7 +1387,7 @@ static inline void hci_encrypt_cfm(struct hci_conn *conn, __u8 status) > __u8 encrypt; > > if (conn->state == BT_CONFIG) { > - if (status) > + if (!status) > conn->state = BT_CONNECTED; > > hci_connect_cfm(conn, status); > -- > 2.27.0 > -- Luiz Augusto von Dentz