Hi Alain, > If a hardware error occurs and the connections are flushed without a > disconnection_complete event being signaled, the temporary linkkeys are > not flushed. > > This change ensures that any outstanding flushable linkkeys are flushed > when the connection are flushed from the hash table. > > Signed-off-by: Alain Michaud <alainm@xxxxxxxxxxxx> > > --- > > Changes in v2: > -Address Feedback from Luiz > > net/bluetooth/hci_conn.c | 3 +++ > net/bluetooth/hci_event.c | 4 ++-- > 2 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c > index 352d7d612128..5911ca0c5239 100644 > --- a/net/bluetooth/hci_conn.c > +++ b/net/bluetooth/hci_conn.c > @@ -118,6 +118,9 @@ static void hci_conn_cleanup(struct hci_conn *conn) > if (test_bit(HCI_CONN_PARAM_REMOVAL_PEND, &conn->flags)) > hci_conn_params_del(conn->hdev, &conn->dst, conn->dst_type); > > + if (test_and_clear_bit(HCI_CONN_FLUSH_KEY, &conn->flags)) > + hci_remove_link_key(hdev, &conn->dst); > + > hci_chan_list_flush(conn); > > hci_conn_hash_del(hdev, conn); > diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c > index 6b83f9b0082c..b67fdd1ad8da 100644 > --- a/net/bluetooth/hci_event.c > +++ b/net/bluetooth/hci_event.c > @@ -2729,7 +2729,7 @@ static void hci_cs_disconnect(struct hci_dev *hdev, u8 status) > mgmt_conn = test_and_clear_bit(HCI_CONN_MGMT_CONNECTED, &conn->flags); > > if (conn->type == ACL_LINK) { > - if (test_bit(HCI_CONN_FLUSH_KEY, &conn->flags)) > + if (test_and_clear_bit(HCI_CONN_FLUSH_KEY, &conn->flags)) > hci_remove_link_key(hdev, &conn->dst); > } > > @@ -3372,7 +3372,7 @@ static void hci_disconn_complete_evt(struct hci_dev *hdev, void *data, > reason, mgmt_connected); > > if (conn->type == ACL_LINK) { > - if (test_bit(HCI_CONN_FLUSH_KEY, &conn->flags)) > + if (test_and_clear_bit(HCI_CONN_FLUSH_KEY, &conn->flags)) > hci_remove_link_key(hdev, &conn->dst); do you mind splitting this into two patches. The test_and_clear_bit() change is obviously correct, but it is fix that is not described in the commit message. Or if you think that it makes sense to keep this together, please add a paragraph about it in the commit message. Regards Marcel