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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 1 Sep 2022 17:54:00 -0700 From: Abhishek Pandit-Subedi <abhishekpandit@...gle.com> To: linux-bluetooth@...r.kernel.org Cc: Abhishek Pandit-Subedi <abhishekpandit@...omium.org>, "David S. Miller" <davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>, Johan Hedberg <johan.hedberg@...il.com>, Luiz Augusto von Dentz <luiz.dentz@...il.com>, Marcel Holtmann <marcel@...tmann.org>, Paolo Abeni <pabeni@...hat.com>, linux-kernel@...r.kernel.org, netdev@...r.kernel.org Subject: Re: [PATCH] Bluetooth: Call shutdown for HCI_USER_CHANNEL Please avoid merging. After additional testing, I've found a problem with btusb->shutdown not working for Intel controllers. btusb_shutdown_intel uses __hci_sync_cmd(...) to send the command and the command complete will not get captured because it is using hci user channel. We'll need a more invasive change to remove the userchannel flag during close so that the stack can properly clean up. On Mon, Aug 29, 2022 at 7:58 PM Abhishek Pandit-Subedi <abhishekpandit@...gle.com> wrote: > > From: Abhishek Pandit-Subedi <abhishekpandit@...omium.org> > > Some drivers depend on shutdown being called for proper operation. > There's no reason to restrict this from being called when using > HCI_USER_CHANNEL. > > Signed-off-by: Abhishek Pandit-Subedi <abhishekpandit@...omium.org> > --- > This is easy to reproduce on QCA6174-A, which uses the hci_qca driver. > Simply open the socket, bind as userchannel and close again. It will > succeed the first time and fail the second time (because shutdown wasn't > called). A similar bug also occurs with btmtksdio (using MT7921). > > Question for maintainers: What is a driver supposed to be doing during > shutdown? We should add some documentation to `struct hci_dev` to > clarify. > > > net/bluetooth/hci_sync.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c > index e08c0503027d..be78fd708f16 100644 > --- a/net/bluetooth/hci_sync.c > +++ b/net/bluetooth/hci_sync.c > @@ -4680,7 +4680,6 @@ int hci_dev_close_sync(struct hci_dev *hdev) > } > > if (!hci_dev_test_flag(hdev, HCI_UNREGISTER) && > - !hci_dev_test_flag(hdev, HCI_USER_CHANNEL) && > test_bit(HCI_UP, &hdev->flags)) { > /* Execute vendor specific shutdown routine */ > if (hdev->shutdown) > -- > 2.37.2.672.g94769d06f0-goog >
Powered by blists - more mailing lists