From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Hans de Goede <hdegoede@redhat.com>,
Ismael Ferreras Morezuelas <swyterzone@gmail.com>,
Marcel Holtmann <marcel@holtmann.org>
Subject: [PATCH 5.17 27/39] Bluetooth: hci_sync: Add a new quirk to skip HCI_FLT_CLEAR_ALL
Date: Fri, 25 Mar 2022 16:14:42 +0100 [thread overview]
Message-ID: <20220325150421.019666191@linuxfoundation.org> (raw)
In-Reply-To: <20220325150420.245733653@linuxfoundation.org>
From: Ismael Ferreras Morezuelas <swyterzone@gmail.com>
commit 0eaecfb2e4814d51ab172df3823e35d7c488b6d2 upstream.
Some controllers have problems with being sent a command to clear
all filtering. While the HCI code does not unconditionally
send a clear-all anymore at BR/EDR setup (after the state machine
refactor), there might be more ways of hitting these codepaths
in the future as the kernel develops.
Cc: stable@vger.kernel.org
Cc: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Ismael Ferreras Morezuelas <swyterzone@gmail.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/net/bluetooth/hci.h | 10 ++++++++++
net/bluetooth/hci_sync.c | 16 ++++++++++++++++
2 files changed, 26 insertions(+)
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -255,6 +255,16 @@ enum {
* during the hdev->setup vendor callback.
*/
HCI_QUIRK_BROKEN_READ_TRANSMIT_POWER,
+
+ /* When this quirk is set, HCI_OP_SET_EVENT_FLT requests with
+ * HCI_FLT_CLEAR_ALL are ignored and event filtering is
+ * completely avoided. A subset of the CSR controller
+ * clones struggle with this and instantly lock up.
+ *
+ * Note that devices using this must (separately) disable
+ * runtime suspend, because event filtering takes place there.
+ */
+ HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL,
};
/* HCI device flags */
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
@@ -2806,6 +2806,9 @@ static int hci_set_event_filter_sync(str
if (!hci_dev_test_flag(hdev, HCI_BREDR_ENABLED))
return 0;
+ if (test_bit(HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL, &hdev->quirks))
+ return 0;
+
memset(&cp, 0, sizeof(cp));
cp.flt_type = flt_type;
@@ -2826,6 +2829,13 @@ static int hci_clear_event_filter_sync(s
if (!hci_dev_test_flag(hdev, HCI_EVENT_FILTER_CONFIGURED))
return 0;
+ /* In theory the state machine should not reach here unless
+ * a hci_set_event_filter_sync() call succeeds, but we do
+ * the check both for parity and as a future reminder.
+ */
+ if (test_bit(HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL, &hdev->quirks))
+ return 0;
+
return hci_set_event_filter_sync(hdev, HCI_FLT_CLEAR_ALL, 0x00,
BDADDR_ANY, 0x00);
}
@@ -4825,6 +4835,12 @@ static int hci_update_event_filter_sync(
if (!hci_dev_test_flag(hdev, HCI_BREDR_ENABLED))
return 0;
+ /* Some fake CSR controllers lock up after setting this type of
+ * filter, so avoid sending the request altogether.
+ */
+ if (test_bit(HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL, &hdev->quirks))
+ return 0;
+
/* Always clear event filter when starting */
hci_clear_event_filter_sync(hdev);
next prev parent reply other threads:[~2022-03-25 15:34 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-25 15:14 [PATCH 5.17 00/39] 5.17.1-rc1 review Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 01/39] tpm: Fix error handling in async work Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 02/39] Bluetooth: btusb: Add another Realtek 8761BU Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 03/39] llc: fix netdevice reference leaks in llc_ui_bind() Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 04/39] ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 05/39] ALSA: oss: Fix PCM OSS buffer allocation overflow Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 06/39] ALSA: usb-audio: add mapping for new Corsair Virtuoso SE Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 07/39] ALSA: hda/realtek: Add quirk for Clevo NP70PNJ Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 08/39] ALSA: hda/realtek: Add quirk for Clevo NP50PNJ Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 09/39] ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc671 Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 10/39] ALSA: hda/realtek: Add quirk for ASUS GA402 Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 11/39] ALSA: pcm: Fix races among concurrent hw_params and hw_free calls Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 12/39] ALSA: pcm: Fix races among concurrent read/write and buffer changes Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 13/39] ALSA: pcm: Fix races among concurrent prepare and hw_params/hw_free calls Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 14/39] ALSA: pcm: Fix races among concurrent prealloc proc writes Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 15/39] ALSA: pcm: Add stream lock during PCM reset ioctl operations Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 16/39] ALSA: usb-audio: Add mute TLV for playback volumes on RODE NT-USB Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 17/39] ALSA: cmipci: Restore aux vol on suspend/resume Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 18/39] ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 19/39] drivers: net: xgene: Fix regression in CRC stripping Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 20/39] netfilter: nf_tables: initialize registers in nft_do_chain() Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 21/39] netfilter: nf_tables: validate registers coming from userspace Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 22/39] ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 23/39] ACPI: battery: Add device HID and quirk for Microsoft Surface Go 3 Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 24/39] ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 25/39] crypto: qat - disable registration of algorithms Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 26/39] Bluetooth: btusb: Add one more Bluetooth part for the Realtek RTL8852AE Greg Kroah-Hartman
2022-03-25 15:14 ` Greg Kroah-Hartman [this message]
2022-03-25 15:14 ` [PATCH 5.17 28/39] Bluetooth: btusb: Use quirk to skip HCI_FLT_CLEAR_ALL on fake CSR controllers Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 29/39] Revert "ath: add support for special 0x0 regulatory domain" Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 30/39] drm/virtio: Ensure that objs is not NULL in virtio_gpu_array_put_free() Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 31/39] jbd2: fix use-after-free of transaction_t race Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 32/39] rcu: Dont deboost before reporting expedited quiescent state Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 33/39] uaccess: fix integer overflow on access_ok() Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 34/39] mac80211: fix potential double free on mesh join Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 35/39] tpm: fix reference counting for struct tpm_chip Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 36/39] tpm: use try_get_ops() in tpm-space.c Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 37/39] wcn36xx: Differentiate wcn3660 from wcn3620 Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 38/39] m68k: fix access_ok for coldfire Greg Kroah-Hartman
2022-03-25 15:14 ` [PATCH 5.17 39/39] nds32: fix access_ok() checks in get/put_user Greg Kroah-Hartman
2022-03-25 23:22 ` [PATCH 5.17 00/39] 5.17.1-rc1 review Shuah Khan
2022-03-26 1:22 ` Fox Chen
2022-03-26 2:53 ` Rudi Heitbaum
2022-03-26 3:07 ` Florian Fainelli
2022-03-26 4:54 ` Naresh Kamboju
2022-03-26 9:55 ` Greg Kroah-Hartman
2022-03-26 12:26 ` Naresh Kamboju
2022-03-26 12:19 ` Bagas Sanjaya
2022-03-27 0:13 ` Ron Economos
2022-03-27 0:52 ` Guenter Roeck
2022-03-27 1:37 ` Justin Forbes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220325150421.019666191@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=hdegoede@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=marcel@holtmann.org \
--cc=stable@vger.kernel.org \
--cc=swyterzone@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.