lkml.org 
[lkml]   [2019]   [Dec]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 155/434] Bluetooth: hci_core: fix init for HCI_USER_CHANNEL
    Date
    From: Mattijs Korpershoek <mkorpershoek@baylibre.com>

    [ Upstream commit eb8c101e28496888a0dcfe16ab86a1bee369e820 ]

    During the setup() stage, HCI device drivers expect the chip to
    acknowledge its setup() completion via vendor specific frames.

    If userspace opens() such HCI device in HCI_USER_CHANNEL [1] mode,
    the vendor specific frames are never tranmitted to the driver, as
    they are filtered in hci_rx_work().

    Allow HCI devices which operate in HCI_USER_CHANNEL mode to receive
    frames if the HCI device is is HCI_INIT state.

    [1] https://www.spinics.net/lists/linux-bluetooth/msg37345.html

    Fixes: 23500189d7e0 ("Bluetooth: Introduce new HCI socket channel for user operation")
    Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/bluetooth/hci_core.c | 9 ++++++++-
    1 file changed, 8 insertions(+), 1 deletion(-)

    diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
    index b2559d4bed81..0cc9ce917222 100644
    --- a/net/bluetooth/hci_core.c
    +++ b/net/bluetooth/hci_core.c
    @@ -4440,7 +4440,14 @@ static void hci_rx_work(struct work_struct *work)
    hci_send_to_sock(hdev, skb);
    }

    - if (hci_dev_test_flag(hdev, HCI_USER_CHANNEL)) {
    + /* If the device has been opened in HCI_USER_CHANNEL,
    + * the userspace has exclusive access to device.
    + * When device is HCI_INIT, we still need to process
    + * the data packets to the driver in order
    + * to complete its setup().
    + */
    + if (hci_dev_test_flag(hdev, HCI_USER_CHANNEL) &&
    + !test_bit(HCI_INIT, &hdev->flags)) {
    kfree_skb(skb);
    continue;
    }
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-12-29 19:09    [W:4.042 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site