]> git.baikalelectronics.ru Git - kernel.git/commit
Bluetooth: Fix workqueue synchronization in hci_dev_open
authorJohan Hedberg <johan.hedberg@intel.com>
Tue, 1 Oct 2013 19:44:50 +0000 (22:44 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 2 Oct 2013 06:27:08 +0000 (23:27 -0700)
commitc65df6b47ea26b2f420c8a39be3372b1b2a32f98
tree0da4305a8246c93e233b71783913205b3bdb0dd4
parent35fb741890968cb3501e70080e1d1b845600c5e0
Bluetooth: Fix workqueue synchronization in hci_dev_open

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: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/hci_core.c