Subject: Re: [PATCH] Revert "Bluetooth: Update resolving list when updating whitelist"

From: Greg Kroah-Hartman <[email-masked]>
Date: Mon, 5 Oct 2020 14:40:18 +0200

On Mon, Oct 05, 2020 at 02:19:32PM +0200, Marcel Holtmann wrote:
> Hi Greg,
> 
> >>>>>>> This reverts commit 0eee35bdfa3b472cc986ecc6ad76293fdcda59e2 as it
> >>>>>>> breaks all bluetooth connections on my machine.
> >>>>>>> 
> >>>>>>> Cc: Marcel Holtmann <[email-masked]>
> >>>>>>> Cc: Sathish Narsimman <[email-masked]>
> >>>>>>> Fixes: 0eee35bdfa3b ("Bluetooth: Update resolving list when updating whitelist")
> >>>>>>> Signed-off-by: Greg Kroah-Hartman <[email-masked]>
> >>>>>>> ---
> >>>>>>> net/bluetooth/hci_request.c | 41 ++-----------------------------------
> >>>>>>> 1 file changed, 2 insertions(+), 39 deletions(-)
> >>>>>>> 
> >>>>>>> This has been bugging me for since 5.9-rc1, when all bluetooth devices
> >>>>>>> stopped working on my desktop system.  I finally got the time to do
> >>>>>>> bisection today, and it came down to this patch.  Reverting it on top of
> >>>>>>> 5.9-rc7 restored bluetooth devices and now my input devices properly
> >>>>>>> work.
> >>>>>>> 
> >>>>>>> As it's almost 5.9-final, any chance this can be merged now to fix the
> >>>>>>> issue?
> >>>>>> 
> >>>>>> can you be specific what breaks since our guys and I also think the
> >>>>>> ChromeOS guys have been testing these series of patches heavily.
> >>>>> 
> >>>>> My bluetooth trackball does not connect at all.  With this reverted, it
> >>>>> all "just works".
> >>>>> 
> >>>>> Same I think for a Bluetooth headset, can check that again if you really
> >>>>> need me to, but the trackball is reliable here.
> >>>>> 
> >>>>>> When you run btmon does it indicate any errors?
> >>>>> 
> >>>>> How do I run it and where are the errors displayed?
> >>>> 
> >>>> you can do btmon -w trace.log and just let it run like tcdpump.
> >>> 
> >>> Ok, attached.
> >>> 
> >>> The device is not connecting, and then I open the gnome bluetooth dialog
> >>> and it scans for devices in the area, but does not connect to my
> >>> existing devices at all.
> >>> 
> >>> Any ideas?
> >> 
> >> the trace file is from -rc7 or from -rc7 with this patch reverted?
> >> 
> >> I asked, because I see no hint that anything goes wrong. However I have a suspicion if you bisected it to this patch.
> >> 
> >> diff --git a/net/bluetooth/hci_request.c b/net/bluetooth/hci_request.c
> >> index e0269192f2e5..94c0daa9f28d 100644
> >> --- a/net/bluetooth/hci_request.c
> >> +++ b/net/bluetooth/hci_request.c
> >> @@ -732,7 +732,7 @@ static int add_to_white_list(struct hci_request *req,
> >>                return -1;
> >> 
> >>        /* White list can not be used with RPAs */
> >> -       if (!allow_rpa && !use_ll_privacy(hdev) &&
> >> +       if (!allow_rpa &&
> >>            hci_find_irk_by_addr(hdev, &params->addr, params->addr_type)) {
> >>                return -1;
> >>        }
> >> @@ -812,7 +812,7 @@ static u8 update_white_list(struct hci_request *req)
> >>                }
> >> 
> >>                /* White list can not be used with RPAs */
> >> -               if (!allow_rpa && !use_ll_privacy(hdev) &&
> >> +               if (!allow_rpa &&
> >>                    hci_find_irk_by_addr(hdev, &b->bdaddr, b->bdaddr_type)) {
> >>                        return 0x00;
> >>                }
> >> 
> >> 
> >> If you just do the above, does thing work for you again?
> > 
> > Corrupted white-space issues aside, yes, it works!
> 
> I just pasted it from a different terminal ;)
> 
> > I am running 5.9-rc8 with just this change on it and my tracball works
> > just fine.
> > 
> >> My suspicion is that the use_ll_privacy check is the wrong one here. It only checks if hardware feature is available, not if it is also enabled.
> > 
> > How would one go about enabling such a hardware feature if they wanted
> > to?  :)
> 
> I need to understand what is going wrong for you. I have a suspicion,
> but first I need to understand what kind of device you have. I hope
> the trace file is enough.

If you need any other information, just let me know, this is a USB
Bluetooth controller from Intel:

	$ lsusb | grep Blue
	Bus 009 Device 002: ID 8087:0029 Intel Corp. AX200 Bluetooth

And the output of usb-devices for it:
	T:  Bus=09 Lev=01 Prnt=01 Port=04 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
	D:  Ver= 2.01 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
	P:  Vendor=8087 ProdID=0029 Rev=00.01
	C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
	I:  If#=0x0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
	I:  If#=0x1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

thanks,

greg k-h