summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Hovold <johan+linaro@kernel.org>2024-04-22 15:57:48 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-05-02 16:35:26 +0200
commitbec4d4c6fa5c6526409f582e4f31144e20c86c21 (patch)
treedc1859368d1ffc19fa0ef10b484b62b6bffe897e
parentb64092d2f108f0cd1d7fd7e176f5fb2a67a2f189 (diff)
downloadlinux-stable-bec4d4c6fa5c6526409f582e4f31144e20c86c21.tar.gz
linux-stable-bec4d4c6fa5c6526409f582e4f31144e20c86c21.tar.bz2
linux-stable-bec4d4c6fa5c6526409f582e4f31144e20c86c21.zip
Bluetooth: qca: fix NULL-deref on non-serdev setup
commit 7ddb9de6af0f1c71147785b12fd7c8ec3f06cc86 upstream. Qualcomm ROME controllers can be registered from the Bluetooth line discipline and in this case the HCI UART serdev pointer is NULL. Add the missing sanity check to prevent a NULL-pointer dereference when setup() is called for a non-serdev controller. Fixes: e9b3e5b8c657 ("Bluetooth: hci_qca: only assign wakeup with serial port support") Cc: stable@vger.kernel.org # 6.2 Cc: Zhengping Jiang <jiangzp@google.com> Signed-off-by: Johan Hovold <johan+linaro@kernel.org> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/bluetooth/hci_qca.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index 21d5dd77aada..ce5c2aa743b0 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -1960,8 +1960,10 @@ retry:
qca_debugfs_init(hdev);
hu->hdev->hw_error = qca_hw_error;
hu->hdev->cmd_timeout = qca_cmd_timeout;
- if (device_can_wakeup(hu->serdev->ctrl->dev.parent))
- hu->hdev->wakeup = qca_wakeup;
+ if (hu->serdev) {
+ if (device_can_wakeup(hu->serdev->ctrl->dev.parent))
+ hu->hdev->wakeup = qca_wakeup;
+ }
} else if (ret == -ENOENT) {
/* No patch/nvm-config found, run with original fw/config */
set_bit(QCA_ROM_FW, &qca->flags);