lkml.org 
[lkml]   [2022]   [Apr]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0618/1017] Bluetooth: call hci_le_conn_failed with hdev lock in hci_le_conn_failed
    Date
    From: Niels Dossche <dossche.niels@gmail.com>

    [ Upstream commit 9fa6b4cda3b414e990f008f45f9bcecbcb54d4d1 ]

    hci_le_conn_failed function's documentation says that the caller must
    hold hdev->lock. The only callsite that does not hold that lock is
    hci_le_conn_failed. The other 3 callsites hold the hdev->lock very
    locally. The solution is to hold the lock during the call to
    hci_le_conn_failed.

    Fixes: 3c857757ef6e ("Bluetooth: Add directed advertising support through connect()")
    Signed-off-by: Niels Dossche <dossche.niels@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/bluetooth/hci_conn.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
    index bd669c95b9a7..55900496ac33 100644
    --- a/net/bluetooth/hci_conn.c
    +++ b/net/bluetooth/hci_conn.c
    @@ -669,7 +669,9 @@ static void le_conn_timeout(struct work_struct *work)
    if (conn->role == HCI_ROLE_SLAVE) {
    /* Disable LE Advertising */
    le_disable_advertising(hdev);
    + hci_dev_lock(hdev);
    hci_le_conn_failed(conn, HCI_ERROR_ADVERTISING_TIMEOUT);
    + hci_dev_unlock(hdev);
    return;
    }

    --
    2.34.1


    \
     
     \ /
      Last update: 2022-04-05 15:26    [W:2.661 / U:0.836 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site