lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <20220412120945.28862-1-vasyl.vavrychuk@opensynergy.com> Date: Tue, 12 Apr 2022 15:09:45 +0300 From: Vasyl Vavrychuk <vvavrychuk@...il.com> To: linux-kernel@...r.kernel.org, netdev@...r.kernel.org, linux-bluetooth@...r.kernel.org Cc: Marcel Holtmann <marcel@...tmann.org>, Johan Hedberg <johan.hedberg@...il.com>, Luiz Augusto von Dentz <luiz.dentz@...il.com>, "David S. Miller" <davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>, Vasyl Vavrychuk <vasyl.vavrychuk@...nsynergy.com> Subject: [RFC PATCH] Bluetooth: core: Allow bind HCI socket user channel when HCI is UP. This is needed for user-space to ensure that HCI init scheduled from hci_register_dev is completed. Function hci_register_dev queues power_on workqueue which will run hci_power_on > hci_dev_do_open. Function hci_dev_do_open sets HCI_INIT for some time. It is not allowed to bind to HCI socket user channel when HCI_INIT is set. As result, bind might fail when user-space program is run early enough during boot. Now, user-space program can first issue HCIDEVUP ioctl to ensure HCI init scheduled at hci_register_dev was completed. Signed-off-by: Vasyl Vavrychuk <vasyl.vavrychuk@...nsynergy.com> --- net/bluetooth/hci_sock.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c index 33b3c0ffc339..c98de809f856 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c @@ -1194,9 +1194,7 @@ static int hci_sock_bind(struct socket *sock, struct sockaddr *addr, if (test_bit(HCI_INIT, &hdev->flags) || hci_dev_test_flag(hdev, HCI_SETUP) || - hci_dev_test_flag(hdev, HCI_CONFIG) || - (!hci_dev_test_flag(hdev, HCI_AUTO_OFF) && - test_bit(HCI_UP, &hdev->flags))) { + hci_dev_test_flag(hdev, HCI_CONFIG)) { err = -EBUSY; hci_dev_put(hdev); goto done; -- 2.30.2
Powered by blists - more mailing lists