• Johan Hedberg's avatar
    Bluetooth: btusb: Fix race when waiting for BTUSB_DOWNLOADING · a087a98e
    Johan Hedberg authored
    The test for BTUSB_DOWNLOADING must be after adding to the wait queue
    and setting the TASK_INTERRUPTIBLE state. Otherwise the flag may get
    cleared after we test for it and we end up getting a timeout since
    schedule_timeout() waits for the full duration. This patch uses a
    wait_on_bit_timeout() + wake_up_bit(). To perform the task both
    race-free as well as in a much simpler way.
    
    Since there's no global wait_on_bit_timeout() helper yet (even though
    all the building blocks for it are in place) this patch creates a
    temporary local btusb copy of it until the global one has made it to
    upstream trees.
    Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    a087a98e
btusb.c 74.7 KB