Commit 1348659d authored by Paolo Abeni's avatar Paolo Abeni
Browse files
Luiz Augusto von Dentz says:

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

 - purge error queues in socket destructors
 - hci_sync: Fix CIS host feature condition
 - L2CAP: Fix invalid response to L2CAP_ECRED_RECONF_REQ
 - L2CAP: Fix result of L2CAP_ECRED_CONN_RSP when MTU is too short
 - L2CAP: Fix response to L2CAP_ECRED_CONN_REQ
 - L2CAP: Fix not checking output MTU is acceptable on L2CAP_ECRED_CONN_REQ
 - L2CAP: Fix missing key size check for L2CAP_LE_CONN_REQ
 - hci_qca: Cleanup on all setup failures

* tag 'for-net-2026-02-23' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth:
  Bluetooth: L2CAP: Fix missing key size check for L2CAP_LE_CONN_REQ
  Bluetooth: L2CAP: Fix not checking output MTU is acceptable on L2CAP_ECRED_CONN_REQ
  Bluetooth: Fix CIS host feature condition
  Bluetooth: L2CAP: Fix response to L2CAP_ECRED_CONN_REQ
  Bluetooth: hci_qca: Cleanup on all setup failures
  Bluetooth: purge error queues in socket destructors
  Bluetooth: L2CAP: Fix result of L2CAP_ECRED_CONN_RSP when MTU is too short
  Bluetooth: L2CAP: Fix invalid response to L2CAP_ECRED_RECONF_REQ
====================

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


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parents fb73d0e1 138d7eca
Loading
Loading
Loading
Loading
+14 −10
Original line number Diff line number Diff line
@@ -2046,9 +2046,11 @@ static int qca_setup(struct hci_uart *hu)
	}

out:
	if (ret && retries < MAX_INIT_RETRIES) {
		bt_dev_warn(hdev, "Retry BT power ON:%d", retries);
	if (ret) {
		qca_power_shutdown(hu);

		if (retries < MAX_INIT_RETRIES) {
			bt_dev_warn(hdev, "Retry BT power ON:%d", retries);
			if (hu->serdev) {
				serdev_device_close(hu->serdev);
				ret = serdev_device_open(hu->serdev);
@@ -2060,6 +2062,8 @@ static int qca_setup(struct hci_uart *hu)
			retries++;
			goto retry;
		}
		return ret;
	}

	/* Setup bdaddr */
	if (soc_type == QCA_ROME)
+5 −3
Original line number Diff line number Diff line
@@ -284,9 +284,9 @@ struct l2cap_conn_rsp {
#define L2CAP_CR_LE_BAD_KEY_SIZE	0x0007
#define L2CAP_CR_LE_ENCRYPTION		0x0008
#define L2CAP_CR_LE_INVALID_SCID	0x0009
#define L2CAP_CR_LE_SCID_IN_USE		0X000A
#define L2CAP_CR_LE_UNACCEPT_PARAMS	0X000B
#define L2CAP_CR_LE_INVALID_PARAMS	0X000C
#define L2CAP_CR_LE_SCID_IN_USE		0x000A
#define L2CAP_CR_LE_UNACCEPT_PARAMS	0x000B
#define L2CAP_CR_LE_INVALID_PARAMS	0x000C

/* connect/create channel status */
#define L2CAP_CS_NO_INFO	0x0000
@@ -493,6 +493,8 @@ struct l2cap_ecred_reconf_req {
#define L2CAP_RECONF_SUCCESS		0x0000
#define L2CAP_RECONF_INVALID_MTU	0x0001
#define L2CAP_RECONF_INVALID_MPS	0x0002
#define L2CAP_RECONF_INVALID_CID	0x0003
#define L2CAP_RECONF_INVALID_PARAMS	0x0004

struct l2cap_ecred_reconf_rsp {
	__le16 result;
+1 −0
Original line number Diff line number Diff line
@@ -2166,6 +2166,7 @@ static void hci_sock_destruct(struct sock *sk)
	mgmt_cleanup(sk);
	skb_queue_purge(&sk->sk_receive_queue);
	skb_queue_purge(&sk->sk_write_queue);
	skb_queue_purge(&sk->sk_error_queue);
}

static const struct proto_ops hci_sock_ops = {
+1 −1
Original line number Diff line number Diff line
@@ -4592,7 +4592,7 @@ static int hci_le_set_host_features_sync(struct hci_dev *hdev)
{
	int err;

	if (iso_capable(hdev)) {
	if (cis_capable(hdev)) {
		/* Connected Isochronous Channels (Host Support) */
		err = hci_le_set_host_feature_sync(hdev, 32,
						   (iso_enabled(hdev) ? 0x01 :
+1 −0
Original line number Diff line number Diff line
@@ -746,6 +746,7 @@ static void iso_sock_destruct(struct sock *sk)

	skb_queue_purge(&sk->sk_receive_queue);
	skb_queue_purge(&sk->sk_write_queue);
	skb_queue_purge(&sk->sk_error_queue);
}

static void iso_sock_cleanup_listen(struct sock *parent)
Loading