linux/net/bluetooth
Marcel Holtmann 2bd8b830da Bluetooth: Fix race condition with user channel and setup stage
commit 781f899f2f upstream.

During the initial setup stage of a controller, the low-level transport
is actually active. This means that HCI_UP is true. To avoid toggling
the transport off and back on again for normal operation the kernel
holds a grace period with HCI_AUTO_OFF that will turn the low-level
transport off in case no user is present.

The idea of the grace period is important to avoid having to initialize
all of the controller twice. So legacy ioctl and the new management
interface knows how to clear this grace period and then start normal
operation.

For the user channel operation this grace period has not been taken into
account which results in the problem that HCI_UP and HCI_AUTO_OFF are
set and the kernel will return EBUSY. However from a system point of
view the controller is ready to be grabbed by either the ioctl, the
management interface or the user channel.

This patch brings the user channel to the same level as the other two
entries for operating a controller.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2015-08-03 09:28:58 -07:00
..
bnep Bluetooth: bnep: Handle BNEP connection setup request 2015-04-03 23:21:34 +02:00
cmtp Bluetooth: cmtp: Use BIT(x) instead of (1 << x) 2015-04-04 08:50:20 +03:00
hidp Bluetooth: hidp: Fix regression with older userspace and flags validation 2015-04-18 11:01:08 -04:00
rfcomm net: Remove iocb argument from sendmsg and recvmsg 2015-03-02 13:06:31 -05:00
6lowpan.c Bluetooth: 6lowpan: Remove PSM setting code 2015-01-14 22:48:13 +01:00
a2mp.c Bluetooth: Make __next_ident function static. 2015-02-15 10:14:54 +02:00
a2mp.h Bluetooth: Make __next_ident function static. 2015-02-15 10:14:54 +02:00
af_bluetooth.c Bluetooth: Convert mgmt to use HCI chan registration API 2015-03-06 20:15:21 +01:00
amp.c Bluetooth: Fix sparse warning in amp.c 2014-11-11 00:07:29 +01:00
amp.h Bluetooth: Move amp.h header file into net/bluetooth/ 2013-10-11 00:10:03 +02:00
ecc.c Bluetooth: Add ECC library for LE Secure Connections 2014-12-03 16:51:16 +01:00
ecc.h Bluetooth: Add ECC library for LE Secure Connections 2014-12-03 16:51:16 +01:00
hci_conn.c Bluetooth: Introduce hci_dev_clear_flag helper macro 2015-03-13 12:09:27 +02:00
hci_core.c Bluetooth: Fix remote name event return directly. 2015-05-14 10:35:04 +02:00
hci_debugfs.c Bluetooth: Expose current Device ID information via debugfs 2015-04-02 08:40:35 +03:00
hci_debugfs.h Bluetooth: Provide option to enable/disable debugfs information 2015-02-15 18:54:13 +02:00
hci_event.c Bluetooth: Read LE remote features during connection establishment 2015-04-09 08:36:54 +03:00
hci_request.c Bluetooth: Add second hci_request callback option for full skb 2015-04-02 16:09:27 +02:00
hci_request.h Bluetooth: Add second hci_request callback option for full skb 2015-04-02 16:09:27 +02:00
hci_sock.c Bluetooth: Fix race condition with user channel and setup stage 2015-08-03 09:28:58 -07:00
hci_sysfs.c Bluetooth: Convert to use ATTRIBUTE_GROUPS macro 2014-02-13 09:51:34 +02:00
Kconfig Bluetooth: Provide option to enable/disable debugfs information 2015-02-15 18:54:13 +02:00
l2cap_core.c Bluetooth: Refactor L2CAP variables into l2cap_ctrl 2015-03-30 23:20:53 +02:00
l2cap_sock.c Bluetooth: Refactor L2CAP variables into l2cap_ctrl 2015-03-30 23:20:53 +02:00
lib.c Bluetooth: Convert bt_<level> logging functions to return void 2014-09-24 09:40:08 +02:00
Makefile Bluetooth: Add generic mgmt helper API 2015-03-17 18:03:08 +01:00
mgmt.c Bluetooth: Add local SSP OOB data to OOB ext data mgmt command 2015-04-07 23:31:20 +02:00
mgmt_util.c Bluetooth: Add generic mgmt helper API 2015-03-17 18:03:08 +01:00
mgmt_util.h Bluetooth: Add generic mgmt helper API 2015-03-17 18:03:08 +01:00
sco.c Bluetooth: fix sco_exit compile warning 2015-03-07 22:13:17 +02:00
selftest.c Bluetooth: Export ECDH selftest result in debugfs 2015-04-02 08:47:38 +03:00
selftest.h Bluetooth: Add support for self testing framework 2014-12-30 08:53:55 +02:00
smp.c Bluetooth: Export SMP selftest result in debugfs 2015-04-02 08:47:40 +03:00
smp.h Bluetooth: Add function for generating LE SC out-of-band data 2015-03-16 10:31:27 +02:00