Bluetooth: Don't initialize msft/aosp when using user channel
authorJesse Melhuish <melhuishj@chromium.org>
Mon, 15 Nov 2021 22:00:52 +0000 (22:00 +0000)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 16 Nov 2021 13:03:11 +0000 (14:03 +0100)
commit385315decf65902768a0062b4e594f59f013025e
treeb40fa0f530df111ff1d43cd2b9907059797f58bc
parenta27c519a816437ec92f0ffa3adbc168c2c08725b
Bluetooth: Don't initialize msft/aosp when using user channel

A race condition is triggered when usermode control is given to
userspace before the kernel's MSFT query responds, resulting in an
unexpected response to userspace's reset command.

Issue can be observed in btmon:

< HCI Command: Vendor (0x3f|0x001e) plen 2                    #3 [hci0]
        05 01                                            ..
@ USER Open: bt_stack_manage (privileged) version 2.22  {0x0002} [hci0]
< HCI Command: Reset (0x03|0x0003) plen 0                     #4 [hci0]
> HCI Event: Command Complete (0x0e) plen 5                   #5 [hci0]
      Vendor (0x3f|0x001e) ncmd 1
Status: Command Disallowed (0x0c)
05                                               .
> HCI Event: Command Complete (0x0e) plen 4                   #6 [hci0]
      Reset (0x03|0x0003) ncmd 2
Status: Success (0x00)

Reviewed-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
Reviewed-by: Sonny Sasaka <sonnysasaka@chromium.org>
Signed-off-by: Jesse Melhuish <melhuishj@chromium.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/hci_sync.c