stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Luiz Augusto von Dentz <luiz.von.dentz@intel.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.3 026/160] Bluetooth: hci_conn: Add support for linking multiple hcon
Date: Mon, 12 Jun 2023 12:25:58 +0200	[thread overview]
Message-ID: <20230612101716.233920086@linuxfoundation.org> (raw)
In-Reply-To: <20230612101715.129581706@linuxfoundation.org>

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

[ Upstream commit 06149746e7203d5ffe2d6faf9799ee36203aa8b8 ]

Since it is required for some configurations to have multiple CIS with
the same peer which is now covered by iso-tester in the following test
cases:

    ISO AC 6(i) - Success
    ISO AC 7(i) - Success
    ISO AC 8(i) - Success
    ISO AC 9(i) - Success
    ISO AC 11(i) - Success

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Stable-dep-of: 71e9588435c3 ("Bluetooth: ISO: use correct CIS order in Set CIG Parameters event")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/net/bluetooth/hci_core.h |  14 ++-
 net/bluetooth/hci_conn.c         | 155 ++++++++++++++++++++++---------
 net/bluetooth/hci_event.c        |  92 ++++++++----------
 net/bluetooth/iso.c              |   8 +-
 4 files changed, 172 insertions(+), 97 deletions(-)

diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index b973ecb222f65..9361e75b9299b 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -766,7 +766,10 @@ struct hci_conn {
 	void		*iso_data;
 	struct amp_mgr	*amp_mgr;
 
-	struct hci_conn	*link;
+	struct list_head link_list;
+	struct hci_conn	*parent;
+	struct hci_link *link;
+
 	struct bt_codec codec;
 
 	void (*connect_cfm_cb)	(struct hci_conn *conn, u8 status);
@@ -776,6 +779,11 @@ struct hci_conn {
 	void (*cleanup)(struct hci_conn *conn);
 };
 
+struct hci_link {
+	struct list_head list;
+	struct hci_conn *conn;
+};
+
 struct hci_chan {
 	struct list_head list;
 	__u16 handle;
@@ -1379,12 +1387,14 @@ static inline void hci_conn_put(struct hci_conn *conn)
 	put_device(&conn->dev);
 }
 
-static inline void hci_conn_hold(struct hci_conn *conn)
+static inline struct hci_conn *hci_conn_hold(struct hci_conn *conn)
 {
 	BT_DBG("hcon %p orig refcnt %d", conn, atomic_read(&conn->refcnt));
 
 	atomic_inc(&conn->refcnt);
 	cancel_delayed_work(&conn->disc_work);
+
+	return conn;
 }
 
 static inline void hci_conn_drop(struct hci_conn *conn)
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index e02afdc557e7b..81aebbbe0b1eb 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -330,8 +330,11 @@ static void hci_add_sco(struct hci_conn *conn, __u16 handle)
 static bool find_next_esco_param(struct hci_conn *conn,
 				 const struct sco_param *esco_param, int size)
 {
+	if (!conn->parent)
+		return false;
+
 	for (; conn->attempt <= size; conn->attempt++) {
-		if (lmp_esco_2m_capable(conn->link) ||
+		if (lmp_esco_2m_capable(conn->parent) ||
 		    (esco_param[conn->attempt - 1].pkt_type & ESCO_2EV3))
 			break;
 		BT_DBG("hcon %p skipped attempt %d, eSCO 2M not supported",
@@ -461,7 +464,7 @@ static int hci_enhanced_setup_sync(struct hci_dev *hdev, void *data)
 		break;
 
 	case BT_CODEC_CVSD:
-		if (lmp_esco_capable(conn->link)) {
+		if (conn->parent && lmp_esco_capable(conn->parent)) {
 			if (!find_next_esco_param(conn, esco_param_cvsd,
 						  ARRAY_SIZE(esco_param_cvsd)))
 				return -EINVAL;
@@ -531,7 +534,7 @@ static bool hci_setup_sync_conn(struct hci_conn *conn, __u16 handle)
 		param = &esco_param_msbc[conn->attempt - 1];
 		break;
 	case SCO_AIRMODE_CVSD:
-		if (lmp_esco_capable(conn->link)) {
+		if (conn->parent && lmp_esco_capable(conn->parent)) {
 			if (!find_next_esco_param(conn, esco_param_cvsd,
 						  ARRAY_SIZE(esco_param_cvsd)))
 				return false;
@@ -637,21 +640,22 @@ void hci_le_start_enc(struct hci_conn *conn, __le16 ediv, __le64 rand,
 /* Device _must_ be locked */
 void hci_sco_setup(struct hci_conn *conn, __u8 status)
 {
-	struct hci_conn *sco = conn->link;
+	struct hci_link *link;
 
-	if (!sco)
+	link = list_first_entry_or_null(&conn->link_list, struct hci_link, list);
+	if (!link || !link->conn)
 		return;
 
 	BT_DBG("hcon %p", conn);
 
 	if (!status) {
 		if (lmp_esco_capable(conn->hdev))
-			hci_setup_sync(sco, conn->handle);
+			hci_setup_sync(link->conn, conn->handle);
 		else
-			hci_add_sco(sco, conn->handle);
+			hci_add_sco(link->conn, conn->handle);
 	} else {
-		hci_connect_cfm(sco, status);
-		hci_conn_del(sco);
+		hci_connect_cfm(link->conn, status);
+		hci_conn_del(link->conn);
 	}
 }
 
@@ -1047,6 +1051,7 @@ struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst,
 	skb_queue_head_init(&conn->data_q);
 
 	INIT_LIST_HEAD(&conn->chan_list);
+	INIT_LIST_HEAD(&conn->link_list);
 
 	INIT_DELAYED_WORK(&conn->disc_work, hci_conn_timeout);
 	INIT_DELAYED_WORK(&conn->auto_accept_work, hci_conn_auto_accept);
@@ -1074,15 +1079,39 @@ struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst,
 	return conn;
 }
 
-static bool hci_conn_unlink(struct hci_conn *conn)
+static void hci_conn_unlink(struct hci_conn *conn)
 {
+	struct hci_dev *hdev = conn->hdev;
+
+	bt_dev_dbg(hdev, "hcon %p", conn);
+
+	if (!conn->parent) {
+		struct hci_link *link, *t;
+
+		list_for_each_entry_safe(link, t, &conn->link_list, list)
+			hci_conn_unlink(link->conn);
+
+		return;
+	}
+
 	if (!conn->link)
-		return false;
+		return;
+
+	hci_conn_put(conn->parent);
+	conn->parent = NULL;
 
-	conn->link->link = NULL;
+	list_del_rcu(&conn->link->list);
+	synchronize_rcu();
+
+	kfree(conn->link);
 	conn->link = NULL;
 
-	return true;
+	/* Due to race, SCO connection might be not established
+	 * yet at this point. Delete it now, otherwise it is
+	 * possible for it to be stuck and can't be deleted.
+	 */
+	if (conn->handle == HCI_CONN_HANDLE_UNSET)
+		hci_conn_del(conn);
 }
 
 int hci_conn_del(struct hci_conn *conn)
@@ -1096,18 +1125,7 @@ int hci_conn_del(struct hci_conn *conn)
 	cancel_delayed_work_sync(&conn->idle_work);
 
 	if (conn->type == ACL_LINK) {
-		struct hci_conn *link = conn->link;
-
-		if (link) {
-			hci_conn_unlink(conn);
-			/* Due to race, SCO connection might be not established
-			 * yet at this point. Delete it now, otherwise it is
-			 * possible for it to be stuck and can't be deleted.
-			 */
-			if (link->handle == HCI_CONN_HANDLE_UNSET)
-				hci_conn_del(link);
-		}
-
+		hci_conn_unlink(conn);
 		/* Unacked frames */
 		hdev->acl_cnt += conn->sent;
 	} else if (conn->type == LE_LINK) {
@@ -1118,7 +1136,7 @@ int hci_conn_del(struct hci_conn *conn)
 		else
 			hdev->acl_cnt += conn->sent;
 	} else {
-		struct hci_conn *acl = conn->link;
+		struct hci_conn *acl = conn->parent;
 
 		if (acl) {
 			hci_conn_unlink(conn);
@@ -1605,11 +1623,40 @@ struct hci_conn *hci_connect_acl(struct hci_dev *hdev, bdaddr_t *dst,
 	return acl;
 }
 
+static struct hci_link *hci_conn_link(struct hci_conn *parent,
+				      struct hci_conn *conn)
+{
+	struct hci_dev *hdev = parent->hdev;
+	struct hci_link *link;
+
+	bt_dev_dbg(hdev, "parent %p hcon %p", parent, conn);
+
+	if (conn->link)
+		return conn->link;
+
+	if (conn->parent)
+		return NULL;
+
+	link = kzalloc(sizeof(*link), GFP_KERNEL);
+	if (!link)
+		return NULL;
+
+	link->conn = hci_conn_hold(conn);
+	conn->link = link;
+	conn->parent = hci_conn_get(parent);
+
+	/* Use list_add_tail_rcu append to the list */
+	list_add_tail_rcu(&link->list, &parent->link_list);
+
+	return link;
+}
+
 struct hci_conn *hci_connect_sco(struct hci_dev *hdev, int type, bdaddr_t *dst,
 				 __u16 setting, struct bt_codec *codec)
 {
 	struct hci_conn *acl;
 	struct hci_conn *sco;
+	struct hci_link *link;
 
 	acl = hci_connect_acl(hdev, dst, BT_SECURITY_LOW, HCI_AT_NO_BONDING,
 			      CONN_REASON_SCO_CONNECT);
@@ -1625,10 +1672,12 @@ struct hci_conn *hci_connect_sco(struct hci_dev *hdev, int type, bdaddr_t *dst,
 		}
 	}
 
-	acl->link = sco;
-	sco->link = acl;
-
-	hci_conn_hold(sco);
+	link = hci_conn_link(acl, sco);
+	if (!link) {
+		hci_conn_drop(acl);
+		hci_conn_drop(sco);
+		return NULL;
+	}
 
 	sco->setting = setting;
 	sco->codec = *codec;
@@ -1895,7 +1944,7 @@ static int hci_create_cis_sync(struct hci_dev *hdev, void *data)
 	u8 cig;
 
 	memset(&cmd, 0, sizeof(cmd));
-	cmd.cis[0].acl_handle = cpu_to_le16(conn->link->handle);
+	cmd.cis[0].acl_handle = cpu_to_le16(conn->parent->handle);
 	cmd.cis[0].cis_handle = cpu_to_le16(conn->handle);
 	cmd.cp.num_cis++;
 	cig = conn->iso_qos.ucast.cig;
@@ -1908,11 +1957,12 @@ static int hci_create_cis_sync(struct hci_dev *hdev, void *data)
 		struct hci_cis *cis = &cmd.cis[cmd.cp.num_cis];
 
 		if (conn == data || conn->type != ISO_LINK ||
-		    conn->state == BT_CONNECTED || conn->iso_qos.ucast.cig != cig)
+		    conn->state == BT_CONNECTED ||
+		    conn->iso_qos.ucast.cig != cig)
 			continue;
 
 		/* Check if all CIS(s) belonging to a CIG are ready */
-		if (!conn->link || conn->link->state != BT_CONNECTED ||
+		if (!conn->parent || conn->parent->state != BT_CONNECTED ||
 		    conn->state != BT_CONNECT) {
 			cmd.cp.num_cis = 0;
 			break;
@@ -1929,7 +1979,7 @@ static int hci_create_cis_sync(struct hci_dev *hdev, void *data)
 		 * command have been generated, the Controller shall return the
 		 * error code Command Disallowed (0x0C).
 		 */
-		cis->acl_handle = cpu_to_le16(conn->link->handle);
+		cis->acl_handle = cpu_to_le16(conn->parent->handle);
 		cis->cis_handle = cpu_to_le16(conn->handle);
 		cmd.cp.num_cis++;
 	}
@@ -1948,15 +1998,33 @@ static int hci_create_cis_sync(struct hci_dev *hdev, void *data)
 int hci_le_create_cis(struct hci_conn *conn)
 {
 	struct hci_conn *cis;
+	struct hci_link *link, *t;
 	struct hci_dev *hdev = conn->hdev;
 	int err;
 
+	bt_dev_dbg(hdev, "hcon %p", conn);
+
 	switch (conn->type) {
 	case LE_LINK:
-		if (!conn->link || conn->state != BT_CONNECTED)
+		if (conn->state != BT_CONNECTED || list_empty(&conn->link_list))
 			return -EINVAL;
-		cis = conn->link;
-		break;
+
+		cis = NULL;
+
+		/* hci_conn_link uses list_add_tail_rcu so the list is in
+		 * the same order as the connections are requested.
+		 */
+		list_for_each_entry_safe(link, t, &conn->link_list, list) {
+			if (link->conn->state == BT_BOUND) {
+				err = hci_le_create_cis(link->conn);
+				if (err)
+					return err;
+
+				cis = link->conn;
+			}
+		}
+
+		return cis ? 0 : -EINVAL;
 	case ISO_LINK:
 		cis = conn;
 		break;
@@ -2177,6 +2245,7 @@ struct hci_conn *hci_connect_cis(struct hci_dev *hdev, bdaddr_t *dst,
 {
 	struct hci_conn *le;
 	struct hci_conn *cis;
+	struct hci_link *link;
 
 	if (hci_dev_test_flag(hdev, HCI_ADVERTISING))
 		le = hci_connect_le(hdev, dst, dst_type, false,
@@ -2202,16 +2271,18 @@ struct hci_conn *hci_connect_cis(struct hci_dev *hdev, bdaddr_t *dst,
 		return cis;
 	}
 
-	le->link = cis;
-	cis->link = le;
-
-	hci_conn_hold(cis);
+	link = hci_conn_link(le, cis);
+	if (!link) {
+		hci_conn_drop(le);
+		hci_conn_drop(cis);
+		return NULL;
+	}
 
 	/* If LE is already connected and CIS handle is already set proceed to
 	 * Create CIS immediately.
 	 */
 	if (le->state == BT_CONNECTED && cis->handle != HCI_CONN_HANDLE_UNSET)
-		hci_le_create_cis(le);
+		hci_le_create_cis(cis);
 
 	return cis;
 }
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 0e0a93cc12186..d00ef6e3fc451 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -2345,7 +2345,8 @@ static void hci_cs_create_conn(struct hci_dev *hdev, __u8 status)
 static void hci_cs_add_sco(struct hci_dev *hdev, __u8 status)
 {
 	struct hci_cp_add_sco *cp;
-	struct hci_conn *acl, *sco;
+	struct hci_conn *acl;
+	struct hci_link *link;
 	__u16 handle;
 
 	bt_dev_dbg(hdev, "status 0x%2.2x", status);
@@ -2365,12 +2366,13 @@ static void hci_cs_add_sco(struct hci_dev *hdev, __u8 status)
 
 	acl = hci_conn_hash_lookup_handle(hdev, handle);
 	if (acl) {
-		sco = acl->link;
-		if (sco) {
-			sco->state = BT_CLOSED;
+		link = list_first_entry_or_null(&acl->link_list,
+						struct hci_link, list);
+		if (link && link->conn) {
+			link->conn->state = BT_CLOSED;
 
-			hci_connect_cfm(sco, status);
-			hci_conn_del(sco);
+			hci_connect_cfm(link->conn, status);
+			hci_conn_del(link->conn);
 		}
 	}
 
@@ -2637,74 +2639,61 @@ static void hci_cs_read_remote_ext_features(struct hci_dev *hdev, __u8 status)
 	hci_dev_unlock(hdev);
 }
 
-static void hci_cs_setup_sync_conn(struct hci_dev *hdev, __u8 status)
+static void hci_setup_sync_conn_status(struct hci_dev *hdev, __u16 handle,
+				       __u8 status)
 {
-	struct hci_cp_setup_sync_conn *cp;
-	struct hci_conn *acl, *sco;
-	__u16 handle;
-
-	bt_dev_dbg(hdev, "status 0x%2.2x", status);
-
-	if (!status)
-		return;
-
-	cp = hci_sent_cmd_data(hdev, HCI_OP_SETUP_SYNC_CONN);
-	if (!cp)
-		return;
+	struct hci_conn *acl;
+	struct hci_link *link;
 
-	handle = __le16_to_cpu(cp->handle);
-
-	bt_dev_dbg(hdev, "handle 0x%4.4x", handle);
+	bt_dev_dbg(hdev, "handle 0x%4.4x status 0x%2.2x", handle, status);
 
 	hci_dev_lock(hdev);
 
 	acl = hci_conn_hash_lookup_handle(hdev, handle);
 	if (acl) {
-		sco = acl->link;
-		if (sco) {
-			sco->state = BT_CLOSED;
+		link = list_first_entry_or_null(&acl->link_list,
+						struct hci_link, list);
+		if (link && link->conn) {
+			link->conn->state = BT_CLOSED;
 
-			hci_connect_cfm(sco, status);
-			hci_conn_del(sco);
+			hci_connect_cfm(link->conn, status);
+			hci_conn_del(link->conn);
 		}
 	}
 
 	hci_dev_unlock(hdev);
 }
 
-static void hci_cs_enhanced_setup_sync_conn(struct hci_dev *hdev, __u8 status)
+static void hci_cs_setup_sync_conn(struct hci_dev *hdev, __u8 status)
 {
-	struct hci_cp_enhanced_setup_sync_conn *cp;
-	struct hci_conn *acl, *sco;
-	__u16 handle;
+	struct hci_cp_setup_sync_conn *cp;
 
 	bt_dev_dbg(hdev, "status 0x%2.2x", status);
 
 	if (!status)
 		return;
 
-	cp = hci_sent_cmd_data(hdev, HCI_OP_ENHANCED_SETUP_SYNC_CONN);
+	cp = hci_sent_cmd_data(hdev, HCI_OP_SETUP_SYNC_CONN);
 	if (!cp)
 		return;
 
-	handle = __le16_to_cpu(cp->handle);
+	hci_setup_sync_conn_status(hdev, __le16_to_cpu(cp->handle), status);
+}
 
-	bt_dev_dbg(hdev, "handle 0x%4.4x", handle);
+static void hci_cs_enhanced_setup_sync_conn(struct hci_dev *hdev, __u8 status)
+{
+	struct hci_cp_enhanced_setup_sync_conn *cp;
 
-	hci_dev_lock(hdev);
+	bt_dev_dbg(hdev, "status 0x%2.2x", status);
 
-	acl = hci_conn_hash_lookup_handle(hdev, handle);
-	if (acl) {
-		sco = acl->link;
-		if (sco) {
-			sco->state = BT_CLOSED;
+	if (!status)
+		return;
 
-			hci_connect_cfm(sco, status);
-			hci_conn_del(sco);
-		}
-	}
+	cp = hci_sent_cmd_data(hdev, HCI_OP_ENHANCED_SETUP_SYNC_CONN);
+	if (!cp)
+		return;
 
-	hci_dev_unlock(hdev);
+	hci_setup_sync_conn_status(hdev, __le16_to_cpu(cp->handle), status);
 }
 
 static void hci_cs_sniff_mode(struct hci_dev *hdev, __u8 status)
@@ -3834,19 +3823,20 @@ static u8 hci_cc_le_set_cig_params(struct hci_dev *hdev, void *data,
 	rcu_read_lock();
 
 	list_for_each_entry_rcu(conn, &hdev->conn_hash.list, list) {
-		if (conn->type != ISO_LINK || conn->iso_qos.ucast.cig != rp->cig_id ||
+		if (conn->type != ISO_LINK ||
+		    conn->iso_qos.ucast.cig != rp->cig_id ||
 		    conn->state == BT_CONNECTED)
 			continue;
 
 		conn->handle = __le16_to_cpu(rp->handle[i++]);
 
-		bt_dev_dbg(hdev, "%p handle 0x%4.4x link %p", conn,
-			   conn->handle, conn->link);
+		bt_dev_dbg(hdev, "%p handle 0x%4.4x parent %p", conn,
+			   conn->handle, conn->parent);
 
 		/* Create CIS if LE is already connected */
-		if (conn->link && conn->link->state == BT_CONNECTED) {
+		if (conn->parent && conn->parent->state == BT_CONNECTED) {
 			rcu_read_unlock();
-			hci_le_create_cis(conn->link);
+			hci_le_create_cis(conn);
 			rcu_read_lock();
 		}
 
@@ -5031,7 +5021,7 @@ static void hci_sync_conn_complete_evt(struct hci_dev *hdev, void *data,
 		if (conn->out) {
 			conn->pkt_type = (hdev->esco_type & SCO_ESCO_MASK) |
 					(hdev->esco_type & EDR_ESCO_MASK);
-			if (hci_setup_sync(conn, conn->link->handle))
+			if (hci_setup_sync(conn, conn->parent->handle))
 				goto unlock;
 		}
 		fallthrough;
diff --git a/net/bluetooth/iso.c b/net/bluetooth/iso.c
index 74117df03a3fa..34d55a85d8f6f 100644
--- a/net/bluetooth/iso.c
+++ b/net/bluetooth/iso.c
@@ -1657,8 +1657,12 @@ static void iso_connect_cfm(struct hci_conn *hcon, __u8 status)
 
 		/* Check if LE link has failed */
 		if (status) {
-			if (hcon->link)
-				iso_conn_del(hcon->link, bt_to_errno(status));
+			struct hci_link *link, *t;
+
+			list_for_each_entry_safe(link, t, &hcon->link_list,
+						 list)
+				iso_conn_del(link->conn, bt_to_errno(status));
+
 			return;
 		}
 
-- 
2.39.2




  parent reply	other threads:[~2023-06-12 11:00 UTC|newest]

Thread overview: 179+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-12 10:25 [PATCH 6.3 000/160] 6.3.8-rc1 review Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 001/160] spi: mt65xx: make sure operations completed before unloading Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 002/160] platform/surface: aggregator: Allow completion work-items to be executed in parallel Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 003/160] platform/surface: aggregator_tabletsw: Add support for book mode in KIP subsystem Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 004/160] spi: qup: Request DMA before enabling clocks Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 005/160] afs: Fix setting of mtime when creating a file/dir/symlink Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 006/160] wifi: mt76: mt7615: fix possible race in mt7615_mac_sta_poll Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 007/160] bpf, sockmap: Avoid potential NULL dereference in sk_psock_verdict_data_ready() Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 008/160] neighbour: fix unaligned access to pneigh_entry Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 009/160] net: dsa: lan9303: allow vid != 0 in port_fdb_{add|del} methods Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 010/160] net/ipv4: ping_group_range: allow GID from 2147483648 to 4294967294 Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 011/160] bpf: Fix UAF in task local storage Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 012/160] bpf: Fix elem_size not being set for inner maps Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 013/160] net/ipv6: fix bool/int mismatch for skip_notify_on_dev_down Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 014/160] net/smc: Avoid to access invalid RMBs MRs in SMCRv1 ADD LINK CONT Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 015/160] net: enetc: correct the statistics of rx bytes Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 016/160] net: enetc: correct rx_bytes statistics of XDP Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 017/160] net/sched: fq_pie: ensure reasonable TCA_FQ_PIE_QUANTUM values Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 018/160] drm/i915: Explain the magic numbers for AUX SYNC/precharge length Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 019/160] drm/i915: Use 18 fast wake AUX sync len Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 020/160] Bluetooth: Split bt_iso_qos into dedicated structures Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 021/160] Bluetooth: ISO: consider right CIS when removing CIG at cleanup Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 022/160] Bluetooth: ISO: Fix CIG auto-allocation to select configurable CIG Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 023/160] Bluetooth: hci_sync: add lock to protect HCI_UNREGISTER Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 024/160] Bluetooth: Fix l2cap_disconnect_req deadlock Greg Kroah-Hartman
2023-06-12 10:25 ` [PATCH 6.3 025/160] Bluetooth: ISO: dont try to remove CIG if there are bound CIS left Greg Kroah-Hartman
2023-06-12 10:25 ` Greg Kroah-Hartman [this message]
2023-06-12 10:25 ` [PATCH 6.3 027/160] Bluetooth: hci_conn: Fix not matching by CIS ID Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 028/160] Bluetooth: ISO: use correct CIS order in Set CIG Parameters event Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 029/160] Bluetooth: L2CAP: Add missing checks for invalid DCID Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 030/160] wifi: mac80211: use correct iftype HE cap Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 031/160] wifi: cfg80211: reject bad AP MLD address Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 032/160] wifi: mac80211: mlme: fix non-inheritence element Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 033/160] wifi: mac80211: dont translate beacon/presp addrs Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 034/160] qed/qede: Fix scheduling while atomic Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 035/160] accel/ivpu: ivpu_ipc needs GENERIC_ALLOCATOR Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 036/160] accel/ivpu: Reserve all non-command bos using DMA_RESV_USAGE_BOOKKEEP Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 037/160] wifi: cfg80211: fix locking in sched scan stop work Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 038/160] wifi: cfg80211: fix locking in regulatory disconnect Greg Kroah-Hartman
2023-06-12 11:43   ` Johannes Berg
2023-06-12 12:10     ` Greg Kroah-Hartman
2023-06-16 16:51       ` Johannes Berg
2023-06-16 18:48         ` Greg Kroah-Hartman
2023-06-16 20:06           ` Johannes Berg
2023-06-17  8:04             ` Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 039/160] selftests/bpf: Verify optval=NULL case Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 040/160] selftests/bpf: Fix sockopt_sk selftest Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 041/160] netfilter: nf_tables: Add null check for nla_nest_start_noflag() in nft_dump_basechain_hook() Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 042/160] netfilter: nft_bitwise: fix register tracking Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 043/160] netfilter: conntrack: fix NULL pointer dereference in nf_confirm_cthelper Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 044/160] netfilter: ipset: Add schedule point in call_ad() Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 045/160] netfilter: nf_tables: out-of-bound check in chain blob Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 046/160] drm/lima: fix sched context destroy Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 047/160] ipv6: rpl: Fix Route of Death Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 048/160] tcp: gso: really support BIG TCP Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 049/160] rfs: annotate lockless accesses to sk->sk_rxhash Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 050/160] rfs: annotate lockless accesses to RFS sock flow table Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 051/160] net: sched: add rcu annotations around qdisc->qdisc_sleeping Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 052/160] drm/i915/selftests: Add some missing error propagation Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 053/160] ice: make writes to /dev/gnssX synchronous Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 054/160] net: sched: move rtm_tca_policy declaration to include file Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 055/160] net: openvswitch: fix upcall counter access before allocation Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 056/160] net: sched: act_police: fix sparse errors in tcf_police_dump() Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 057/160] net: sched: fix possible refcount leak in tc_chain_tmplt_add() Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 058/160] bpf: Add extra path pointer check to d_path helper Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 059/160] drm/amdgpu: fix Null pointer dereference error in amdgpu_device_recover_vram Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 060/160] lib: cpu_rmap: Fix potential use-after-free in irq_cpu_rmap_release() Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 061/160] net: bcmgenet: Fix EEE implementation Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 062/160] accel/ivpu: Do not use mutex_lock_interruptible Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 063/160] bnxt_en: Fix bnxt_hwrm_update_rss_hash_cfg() Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 064/160] bnxt_en: Dont issue AP reset during ethtools reset operation Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 065/160] bnxt_en: Query default VLAN before VNIC setup on a VF Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 066/160] bnxt_en: Skip firmware fatal error recovery if chip is not accessible Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 067/160] bnxt_en: Prevent kernel panic when receiving unexpected PHC_UPDATE event Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 068/160] bnxt_en: Implement .set_port / .unset_port UDP tunnel callbacks Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 069/160] drm/msm/a6xx: initialize GMU mutex earlier Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 070/160] batman-adv: Broken sync while rescheduling delayed work Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 071/160] Input: xpad - delete a Razer DeathAdder mouse VID/PID entry Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 072/160] Input: cyttsp5 - fix array length Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 073/160] Input: psmouse - fix OOB access in Elantech protocol Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 074/160] Input: fix open count when closing inhibited device Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 075/160] ALSA: hda: Fix kctl->id initialization Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 076/160] ALSA: ymfpci: " Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 077/160] ALSA: gus: " Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 078/160] ALSA: cmipci: " Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 079/160] ALSA: hda/realtek: Add quirk for Clevo NS50AU Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 080/160] ALSA: ice1712,ice1724: fix the kcontrol->id initialization Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 081/160] ALSA: hda/realtek: Add a quirk for HP Slim Desktop S01 Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 082/160] ALSA: hda/realtek: Add Lenovo P3 Tower platform Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 083/160] ALSA: hda/realtek: Add quirks for Asus ROG 2024 laptops using CS35L41 Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 084/160] drm/i915/gt: Use the correct error value when kernel_context() fails Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 085/160] drm/amd/pm: conditionally disable pcie lane switching for some sienna_cichlid SKUs Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 086/160] drm/amdgpu: fix xclk freq on CHIP_STONEY Greg Kroah-Hartman
2023-06-12 10:26 ` [PATCH 6.3 087/160] drm/amdgpu: change reserved vram info print Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 088/160] drm/amd: Disallow s0ix without BIOS support again Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 089/160] drm/amd/pm: Fix power context allocation in SMU13 Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 090/160] drm/amd/display: Reduce sdp bw after urgent to 90% Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 091/160] drm/amd/display: add ODM case when looking for first split pipe Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 092/160] wifi: iwlwifi: mvm: Fix -Warray-bounds bug in iwl_mvm_wait_d3_notif() Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 093/160] can: j1939: j1939_sk_send_loop_abort(): improved error queue handling in J1939 Socket Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 094/160] can: j1939: change j1939_netdev_lock type to mutex Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 095/160] can: j1939: avoid possible use-after-free when j1939_can_rx_register fails Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 096/160] mptcp: only send RM_ADDR in nl_cmd_remove Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 097/160] mptcp: add address into userspace pm list Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 098/160] mptcp: update userspace pm infos Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 099/160] selftests: mptcp: update userspace pm addr tests Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 100/160] selftests: mptcp: update userspace pm subflow tests Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 101/160] ceph: fix use-after-free bug for inodes when flushing capsnaps Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 102/160] accel/ivpu: Do not trigger extra VPU reset if the VPU is idle Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 103/160] accel/ivpu: Fix sporadic VPU boot failure Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 104/160] s390/dasd: Use correct lock while counting channel queue length Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 105/160] Bluetooth: Fix use-after-free in hci_remove_ltk/hci_remove_irk Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 106/160] Bluetooth: fix debugfs registration Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 107/160] Bluetooth: hci_qca: " Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 108/160] tee: amdtee: Add return_origin to struct tee_cmd_load_ta Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 109/160] rbd: move RBD_OBJ_FLAG_COPYUP_ENABLED flag setting Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 110/160] rbd: get snapshot context after exclusive lock is ensured to be held Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 111/160] virtio_net: use control_buf for coalesce params Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 112/160] soc: qcom: icc-bwmon: fix incorrect error code passed to dev_err_probe() Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 113/160] pinctrl: meson-axg: add missing GPIOA_18 gpio group Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 114/160] usb: usbfs: Enforce page requirements for mmap Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 115/160] usb: usbfs: Use consistent mmap functions Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 116/160] mm: page_table_check: Make it dependent on EXCLUSIVE_SYSTEM_RAM Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 117/160] mm: page_table_check: Ensure user pages are not slab pages Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 118/160] soc: qcom: rpmh-rsc: drop redundant unsigned >=0 comparision Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 119/160] arm64: dts: qcom: sc8280xp: Flush RSC sleep & wake votes Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 120/160] arm64: dts: qcom: sm6375-pdx225: Fix remoteproc firmware paths Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 121/160] ARM: at91: pm: fix imbalanced reference counter for ethernet devices Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 122/160] ARM: dts: at91: sama7g5ek: fix debounce delay property for shdwc Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 123/160] ASoC: codecs: wsa883x: do not set can_multi_write flag Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 124/160] ASoC: codecs: wsa881x: " Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 125/160] soc: qcom: ramp_controller: Fix an error handling path in qcom_ramp_controller_probe() Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 126/160] soc: qcom: rmtfs: Fix error code in probe() Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 127/160] arm64: dts: qcom: sc7180-lite: Fix SDRAM freq for misidentified sc7180-lite boards Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 128/160] arm64: dts: imx8qm-mek: correct GPIOs for USDHC2 CD and WP signals Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 129/160] arm64: dts: imx8-ss-dma: assign default clock rate for lpuarts Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 130/160] ASoC: amd: ps: fix for acp_lock access in pdm driver Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 131/160] ASoC: mediatek: mt8188: fix use-after-free in driver remove path Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 132/160] ASoC: mediatek: mt8195-afe-pcm: Convert to platform remove callback returning void Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 133/160] ASoC: mediatek: mt8195: fix use-after-free in driver remove path Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 134/160] ASoC: simple-card-utils: fix PCM constraint error check Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 135/160] blk-mq: fix blk_mq_hw_ctx active request accounting Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 136/160] arm64: dts: imx8mn-beacon: Fix SPI CS pinmux Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 137/160] i2c: mv64xxx: Fix reading invalid status value in atomic mode Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 138/160] firmware: arm_ffa: Set handle field to zero in memory descriptor Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 139/160] gpio: sim: fix memory corruption when adding named lines and unnamed hogs Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 140/160] i2c: sprd: Delete i2c adapter in .removes error path Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 141/160] riscv: mm: Ensure prot of VM_WRITE and VM_EXEC must be readable Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 142/160] eeprom: at24: also select REGMAP Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 143/160] soundwire: stream: Add missing clear of alloc_slave_rt Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 144/160] riscv: fix kprobe __user string arg print fault issue Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 145/160] vduse: avoid empty string for dev name Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 146/160] vdpa/mlx5: Fix hang when cvq commands are triggered during device unregister Greg Kroah-Hartman
2023-06-12 10:27 ` [PATCH 6.3 147/160] vhost: support PACKED when setting-getting vring_base Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 148/160] vhost_vdpa: " Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 149/160] ksmbd: fix out-of-bound read in deassemble_neg_contexts() Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 150/160] ksmbd: fix out-of-bound read in parse_lease_state() Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 151/160] ksmbd: fix posix_acls and acls dereferencing possible ERR_PTR() Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 152/160] ksmbd: check the validation of pdu_size in ksmbd_conn_handler_loop Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 153/160] Bluetooth: Fix potential double free caused by hci_conn_unlink Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 154/160] Bluetooth: Refcnt drop must be placed last in hci_conn_unlink Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 155/160] Bluetooth: Fix UAF in hci_conn_hash_flush again Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 156/160] Revert "ext4: dont clear SB_RDONLY when remounting r/w until quota is re-enabled" Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 157/160] ext4: only check dquot_initialize_needed() when debugging Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 158/160] wifi: rtw89: correct PS calculation for SUPPORTS_DYNAMIC_PS Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 159/160] wifi: rtw88: " Greg Kroah-Hartman
2023-06-12 10:28 ` [PATCH 6.3 160/160] Revert "staging: rtl8192e: Replace macro RTL_PCI_DEVICE with PCI_DEVICE" Greg Kroah-Hartman
2023-06-12 21:08 ` [PATCH 6.3 000/160] 6.3.8-rc1 review Allen Pais
2023-06-12 21:51 ` Chris Paterson
2023-06-12 22:16 ` Shuah Khan
2023-06-13  4:36 ` Bagas Sanjaya
2023-06-13  7:12 ` Ron Economos
2023-06-13  7:31 ` Naresh Kamboju
2023-06-13  8:39 ` Jon Hunter
2023-06-13  8:48 ` Conor Dooley
2023-06-13 12:16 ` Sudip Mukherjee (Codethink)
2023-06-13 13:33 ` Rudi Heitbaum
2023-06-13 18:27 ` Justin Forbes
2023-06-13 23:10 ` Guenter Roeck

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=20230612101716.233920086@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=luiz.von.dentz@intel.com \
    --cc=patches@lists.linux.dev \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).