Hi Luiz, > hci_update_accept_list_sync is returning the filter based on the error > but that gets overwritten by hci_le_set_addr_resolution_enable_sync > return instead of using the actual result of the likes of > hci_le_add_accept_list_sync which was intended. > > Fixes: ad383c2c65a5b ("Bluetooth: hci_sync: Enable advertising when LL privacy is enabled") > Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> > --- > net/bluetooth/hci_sync.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c > index b66a2271c433..ca51d6138540 100644 > --- a/net/bluetooth/hci_sync.c > +++ b/net/bluetooth/hci_sync.c > @@ -1844,7 +1844,7 @@ static u8 hci_update_accept_list_sync(struct hci_dev *hdev) > struct bdaddr_list *b, *t; > u8 num_entries = 0; > bool pend_conn, pend_report; > - int err; > + int err, ret; > > /* Pause advertising if resolving list can be used as controllers are > * cannot accept resolving list modifications while advertising. > @@ -1930,6 +1930,8 @@ static u8 hci_update_accept_list_sync(struct hci_dev *hdev) > err = -EINVAL; > > done: > + ret = err ? 0x00 : 0x01; > + > /* Enable address resolution when LL Privacy is enabled. */ > err = hci_le_set_addr_resolution_enable_sync(hdev, 0x01); > if (err) > @@ -1940,7 +1942,7 @@ static u8 hci_update_accept_list_sync(struct hci_dev *hdev) > hci_resume_advertising_sync(hdev); > > /* Select filter policy to use accept list */ > - return err ? 0x00 : 0x01; > + return ret; > } hmmmmm. I dislike the usage of err and ret together. That makes for some hard to read code (and the return value is u8 and not int). Maybe doing u8 filter_policy = 0x00; ... And then done: /* select filter policy to use accept list */ filter_policy = 0x01; ... return filter_policy; } Regards Marcel