Commit d1a866d5 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files
Luiz Augusto von Dentz says:

====================
bluetooth pull request for net:

 - hci_qca: move the SoC type check to the right place
 - MGMT: reject malformed HCI_CMD_SYNC commands
 - btnxpuart: Fix missing devm_request_irq() return value check
 - L2CAP: Fix not responding with L2CAP_CR_LE_ENCRYPTION

* tag 'for-net-2025-05-30' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth:
  Bluetooth: L2CAP: Fix not responding with L2CAP_CR_LE_ENCRYPTION
  Bluetooth: hci_qca: move the SoC type check to the right place
  Bluetooth: btnxpuart: Fix missing devm_request_irq() return value check
  Bluetooth: MGMT: reject malformed HCI_CMD_SYNC commands
====================

Link: https://patch.msgid.link/20250530174835.405726-1-luiz.dentz@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents d3faab9b 03dba9ce
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -533,6 +533,8 @@ static int ps_setup(struct hci_dev *hdev)
					ps_host_wakeup_irq_handler,
					IRQF_ONESHOT | IRQF_TRIGGER_FALLING,
					dev_name(&serdev->dev), nxpdev);
		if (ret)
			bt_dev_info(hdev, "error setting wakeup IRQ handler, ignoring\n");
		disable_irq(psdata->irq_handler);
		device_init_wakeup(&serdev->dev, true);
	}
+7 −7
Original line number Diff line number Diff line
@@ -2415,14 +2415,14 @@ static int qca_serdev_probe(struct serdev_device *serdev)

		qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable",
					       GPIOD_OUT_LOW);
		if (IS_ERR(qcadev->bt_en) &&
		    (data->soc_type == QCA_WCN6750 ||
		     data->soc_type == QCA_WCN6855)) {
			dev_err(&serdev->dev, "failed to acquire BT_EN gpio\n");
			return PTR_ERR(qcadev->bt_en);
		}
		if (IS_ERR(qcadev->bt_en))
			return dev_err_probe(&serdev->dev,
					     PTR_ERR(qcadev->bt_en),
					     "failed to acquire BT_EN gpio\n");

		if (!qcadev->bt_en)
		if (!qcadev->bt_en &&
		    (data->soc_type == QCA_WCN6750 ||
		     data->soc_type == QCA_WCN6855))
			power_ctrl_enabled = false;

		qcadev->sw_ctrl = devm_gpiod_get_optional(&serdev->dev, "swctrl",
+2 −1
Original line number Diff line number Diff line
@@ -4870,7 +4870,8 @@ static int l2cap_le_connect_req(struct l2cap_conn *conn,

	if (!smp_sufficient_security(conn->hcon, pchan->sec_level,
				     SMP_ALLOW_STK)) {
		result = L2CAP_CR_LE_AUTHENTICATION;
		result = pchan->sec_level == BT_SECURITY_MEDIUM ?
			L2CAP_CR_LE_ENCRYPTION : L2CAP_CR_LE_AUTHENTICATION;
		chan = NULL;
		goto response_unlock;
	}
+2 −1
Original line number Diff line number Diff line
@@ -2566,7 +2566,8 @@ static int mgmt_hci_cmd_sync(struct sock *sk, struct hci_dev *hdev,
	struct mgmt_pending_cmd *cmd;
	int err;

	if (len < sizeof(*cp))
	if (len != (offsetof(struct mgmt_cp_hci_cmd_sync, params) +
		    le16_to_cpu(cp->params_len)))
		return mgmt_cmd_status(sk, hdev->id, MGMT_OP_HCI_CMD_SYNC,
				       MGMT_STATUS_INVALID_PARAMS);