• Johan Hedberg's avatar
    Bluetooth: Fix workqueue synchronization in hci_dev_open · e1d08f40
    Johan Hedberg authored
    When hci_sock.c calls hci_dev_open it needs to ensure that there isn't
    pending work in progress, such as that which is scheduled for the
    initial setup procedure or the one for automatically powering off after
    the setup procedure. This adds the necessary calls to ensure that any
    previously scheduled work is completed before attempting to call
    hci_dev_do_open.
    
    This patch fixes a race with old user space versions where we might
    receive a HCIDEVUP ioctl before the setup procedure has been completed.
    When that happens the setup procedures callback may fail early and leave
    the device in an inconsistent state, causing e.g. the setup callback to
    be (incorrectly) called more than once.
    Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    e1d08f40
hci_core.c 78.6 KB