Linux kernel -stable discussions
 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, Steve French <smfrench@gmail.com>,
	Tom Talpey <tom@talpey.com>, Long Li <longli@microsoft.com>,
	Namjae Jeon <linkinjeon@kernel.org>,
	Hyunchul Lee <hyc.lee@gmail.com>,
	Meetakshi Setiya <meetakshisetiyaoss@gmail.com>,
	linux-cifs@vger.kernel.org, samba-technical@lists.samba.org,
	Stefan Metzmacher <metze@samba.org>,
	Steve French <stfrench@microsoft.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.6 224/262] smb: client: make use of common smbdirect_socket
Date: Tue, 12 Aug 2025 19:30:12 +0200	[thread overview]
Message-ID: <20250812173002.688803591@linuxfoundation.org> (raw)
In-Reply-To: <20250812172952.959106058@linuxfoundation.org>

6.6-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Stefan Metzmacher <metze@samba.org>

[ Upstream commit c3011b9a7deaaaabdf955815d29eac39c8b75e67 ]

This is the next step in the direction of a common smbdirect layer.
Currently only structures are shared, but that will change
over time until everything is shared.

Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: Namjae Jeon <linkinjeon@kernel.org>
Cc: Hyunchul Lee <hyc.lee@gmail.com>
Cc: Meetakshi Setiya <meetakshisetiyaoss@gmail.com>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Stable-dep-of: 5349ae5e05fa ("smb: client: let send_done() cleanup before calling smbd_disconnect_rdma_connection()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/smb/client/cifs_debug.c |   2 +-
 fs/smb/client/smbdirect.c  | 258 ++++++++++++++++++++-----------------
 fs/smb/client/smbdirect.h  |  12 +-
 3 files changed, 146 insertions(+), 126 deletions(-)

diff --git a/fs/smb/client/cifs_debug.c b/fs/smb/client/cifs_debug.c
index 4a20e92474b2..50ad8246ed18 100644
--- a/fs/smb/client/cifs_debug.c
+++ b/fs/smb/client/cifs_debug.c
@@ -384,7 +384,7 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
 		seq_printf(m, "\nSMBDirect (in hex) protocol version: %x "
 			"transport status: %x",
 			server->smbd_conn->protocol,
-			server->smbd_conn->transport_status);
+			server->smbd_conn->socket.status);
 		seq_printf(m, "\nConn receive_credit_max: %x "
 			"send_credit_target: %x max_send_size: %x",
 			server->smbd_conn->receive_credit_max,
diff --git a/fs/smb/client/smbdirect.c b/fs/smb/client/smbdirect.c
index e7f15515f5d4..8d215b207dcc 100644
--- a/fs/smb/client/smbdirect.c
+++ b/fs/smb/client/smbdirect.c
@@ -164,10 +164,11 @@ static void smbd_disconnect_rdma_work(struct work_struct *work)
 {
 	struct smbd_connection *info =
 		container_of(work, struct smbd_connection, disconnect_work);
+	struct smbdirect_socket *sc = &info->socket;
 
-	if (info->transport_status == SMBD_CONNECTED) {
-		info->transport_status = SMBD_DISCONNECTING;
-		rdma_disconnect(info->id);
+	if (sc->status == SMBDIRECT_SOCKET_CONNECTED) {
+		sc->status = SMBDIRECT_SOCKET_DISCONNECTING;
+		rdma_disconnect(sc->rdma.cm_id);
 	}
 }
 
@@ -181,6 +182,7 @@ static int smbd_conn_upcall(
 		struct rdma_cm_id *id, struct rdma_cm_event *event)
 {
 	struct smbd_connection *info = id->context;
+	struct smbdirect_socket *sc = &info->socket;
 
 	log_rdma_event(INFO, "event=%d status=%d\n",
 		event->event, event->status);
@@ -204,7 +206,7 @@ static int smbd_conn_upcall(
 
 	case RDMA_CM_EVENT_ESTABLISHED:
 		log_rdma_event(INFO, "connected event=%d\n", event->event);
-		info->transport_status = SMBD_CONNECTED;
+		sc->status = SMBDIRECT_SOCKET_CONNECTED;
 		wake_up_interruptible(&info->conn_wait);
 		break;
 
@@ -212,20 +214,20 @@ static int smbd_conn_upcall(
 	case RDMA_CM_EVENT_UNREACHABLE:
 	case RDMA_CM_EVENT_REJECTED:
 		log_rdma_event(INFO, "connecting failed event=%d\n", event->event);
-		info->transport_status = SMBD_DISCONNECTED;
+		sc->status = SMBDIRECT_SOCKET_DISCONNECTED;
 		wake_up_interruptible(&info->conn_wait);
 		break;
 
 	case RDMA_CM_EVENT_DEVICE_REMOVAL:
 	case RDMA_CM_EVENT_DISCONNECTED:
 		/* This happens when we fail the negotiation */
-		if (info->transport_status == SMBD_NEGOTIATE_FAILED) {
-			info->transport_status = SMBD_DISCONNECTED;
+		if (sc->status == SMBDIRECT_SOCKET_NEGOTIATE_FAILED) {
+			sc->status = SMBDIRECT_SOCKET_DISCONNECTED;
 			wake_up(&info->conn_wait);
 			break;
 		}
 
-		info->transport_status = SMBD_DISCONNECTED;
+		sc->status = SMBDIRECT_SOCKET_DISCONNECTED;
 		wake_up_interruptible(&info->disconn_wait);
 		wake_up_interruptible(&info->wait_reassembly_queue);
 		wake_up_interruptible_all(&info->wait_send_queue);
@@ -274,6 +276,8 @@ static void send_done(struct ib_cq *cq, struct ib_wc *wc)
 	int i;
 	struct smbd_request *request =
 		container_of(wc->wr_cqe, struct smbd_request, cqe);
+	struct smbd_connection *info = request->info;
+	struct smbdirect_socket *sc = &info->socket;
 
 	log_rdma_send(INFO, "smbd_request 0x%p completed wc->status=%d\n",
 		request, wc->status);
@@ -285,7 +289,7 @@ static void send_done(struct ib_cq *cq, struct ib_wc *wc)
 	}
 
 	for (i = 0; i < request->num_sge; i++)
-		ib_dma_unmap_single(request->info->id->device,
+		ib_dma_unmap_single(sc->ib.dev,
 			request->sge[i].addr,
 			request->sge[i].length,
 			DMA_TO_DEVICE);
@@ -392,8 +396,9 @@ static void smbd_post_send_credits(struct work_struct *work)
 	struct smbd_connection *info =
 		container_of(work, struct smbd_connection,
 			post_send_credits_work);
+	struct smbdirect_socket *sc = &info->socket;
 
-	if (info->transport_status != SMBD_CONNECTED) {
+	if (sc->status != SMBDIRECT_SOCKET_CONNECTED) {
 		wake_up(&info->wait_receive_queues);
 		return;
 	}
@@ -634,32 +639,34 @@ static int smbd_ia_open(
 		struct smbd_connection *info,
 		struct sockaddr *dstaddr, int port)
 {
+	struct smbdirect_socket *sc = &info->socket;
 	int rc;
 
-	info->id = smbd_create_id(info, dstaddr, port);
-	if (IS_ERR(info->id)) {
-		rc = PTR_ERR(info->id);
+	sc->rdma.cm_id = smbd_create_id(info, dstaddr, port);
+	if (IS_ERR(sc->rdma.cm_id)) {
+		rc = PTR_ERR(sc->rdma.cm_id);
 		goto out1;
 	}
+	sc->ib.dev = sc->rdma.cm_id->device;
 
-	if (!frwr_is_supported(&info->id->device->attrs)) {
+	if (!frwr_is_supported(&sc->ib.dev->attrs)) {
 		log_rdma_event(ERR, "Fast Registration Work Requests (FRWR) is not supported\n");
 		log_rdma_event(ERR, "Device capability flags = %llx max_fast_reg_page_list_len = %u\n",
-			       info->id->device->attrs.device_cap_flags,
-			       info->id->device->attrs.max_fast_reg_page_list_len);
+			       sc->ib.dev->attrs.device_cap_flags,
+			       sc->ib.dev->attrs.max_fast_reg_page_list_len);
 		rc = -EPROTONOSUPPORT;
 		goto out2;
 	}
 	info->max_frmr_depth = min_t(int,
 		smbd_max_frmr_depth,
-		info->id->device->attrs.max_fast_reg_page_list_len);
+		sc->ib.dev->attrs.max_fast_reg_page_list_len);
 	info->mr_type = IB_MR_TYPE_MEM_REG;
-	if (info->id->device->attrs.kernel_cap_flags & IBK_SG_GAPS_REG)
+	if (sc->ib.dev->attrs.kernel_cap_flags & IBK_SG_GAPS_REG)
 		info->mr_type = IB_MR_TYPE_SG_GAPS;
 
-	info->pd = ib_alloc_pd(info->id->device, 0);
-	if (IS_ERR(info->pd)) {
-		rc = PTR_ERR(info->pd);
+	sc->ib.pd = ib_alloc_pd(sc->ib.dev, 0);
+	if (IS_ERR(sc->ib.pd)) {
+		rc = PTR_ERR(sc->ib.pd);
 		log_rdma_event(ERR, "ib_alloc_pd() returned %d\n", rc);
 		goto out2;
 	}
@@ -667,8 +674,8 @@ static int smbd_ia_open(
 	return 0;
 
 out2:
-	rdma_destroy_id(info->id);
-	info->id = NULL;
+	rdma_destroy_id(sc->rdma.cm_id);
+	sc->rdma.cm_id = NULL;
 
 out1:
 	return rc;
@@ -682,6 +689,7 @@ static int smbd_ia_open(
  */
 static int smbd_post_send_negotiate_req(struct smbd_connection *info)
 {
+	struct smbdirect_socket *sc = &info->socket;
 	struct ib_send_wr send_wr;
 	int rc = -ENOMEM;
 	struct smbd_request *request;
@@ -705,18 +713,18 @@ static int smbd_post_send_negotiate_req(struct smbd_connection *info)
 
 	request->num_sge = 1;
 	request->sge[0].addr = ib_dma_map_single(
-				info->id->device, (void *)packet,
+				sc->ib.dev, (void *)packet,
 				sizeof(*packet), DMA_TO_DEVICE);
-	if (ib_dma_mapping_error(info->id->device, request->sge[0].addr)) {
+	if (ib_dma_mapping_error(sc->ib.dev, request->sge[0].addr)) {
 		rc = -EIO;
 		goto dma_mapping_failed;
 	}
 
 	request->sge[0].length = sizeof(*packet);
-	request->sge[0].lkey = info->pd->local_dma_lkey;
+	request->sge[0].lkey = sc->ib.pd->local_dma_lkey;
 
 	ib_dma_sync_single_for_device(
-		info->id->device, request->sge[0].addr,
+		sc->ib.dev, request->sge[0].addr,
 		request->sge[0].length, DMA_TO_DEVICE);
 
 	request->cqe.done = send_done;
@@ -733,14 +741,14 @@ static int smbd_post_send_negotiate_req(struct smbd_connection *info)
 		request->sge[0].length, request->sge[0].lkey);
 
 	atomic_inc(&info->send_pending);
-	rc = ib_post_send(info->id->qp, &send_wr, NULL);
+	rc = ib_post_send(sc->ib.qp, &send_wr, NULL);
 	if (!rc)
 		return 0;
 
 	/* if we reach here, post send failed */
 	log_rdma_send(ERR, "ib_post_send failed rc=%d\n", rc);
 	atomic_dec(&info->send_pending);
-	ib_dma_unmap_single(info->id->device, request->sge[0].addr,
+	ib_dma_unmap_single(sc->ib.dev, request->sge[0].addr,
 		request->sge[0].length, DMA_TO_DEVICE);
 
 	smbd_disconnect_rdma_connection(info);
@@ -792,6 +800,7 @@ static int manage_keep_alive_before_sending(struct smbd_connection *info)
 static int smbd_post_send(struct smbd_connection *info,
 		struct smbd_request *request)
 {
+	struct smbdirect_socket *sc = &info->socket;
 	struct ib_send_wr send_wr;
 	int rc, i;
 
@@ -800,7 +809,7 @@ static int smbd_post_send(struct smbd_connection *info,
 			"rdma_request sge[%d] addr=0x%llx length=%u\n",
 			i, request->sge[i].addr, request->sge[i].length);
 		ib_dma_sync_single_for_device(
-			info->id->device,
+			sc->ib.dev,
 			request->sge[i].addr,
 			request->sge[i].length,
 			DMA_TO_DEVICE);
@@ -815,7 +824,7 @@ static int smbd_post_send(struct smbd_connection *info,
 	send_wr.opcode = IB_WR_SEND;
 	send_wr.send_flags = IB_SEND_SIGNALED;
 
-	rc = ib_post_send(info->id->qp, &send_wr, NULL);
+	rc = ib_post_send(sc->ib.qp, &send_wr, NULL);
 	if (rc) {
 		log_rdma_send(ERR, "ib_post_send failed rc=%d\n", rc);
 		smbd_disconnect_rdma_connection(info);
@@ -832,6 +841,7 @@ static int smbd_post_send_iter(struct smbd_connection *info,
 			       struct iov_iter *iter,
 			       int *_remaining_data_length)
 {
+	struct smbdirect_socket *sc = &info->socket;
 	int i, rc;
 	int header_length;
 	int data_length;
@@ -843,11 +853,11 @@ static int smbd_post_send_iter(struct smbd_connection *info,
 	/* Wait for send credits. A SMBD packet needs one credit */
 	rc = wait_event_interruptible(info->wait_send_queue,
 		atomic_read(&info->send_credits) > 0 ||
-		info->transport_status != SMBD_CONNECTED);
+		sc->status != SMBDIRECT_SOCKET_CONNECTED);
 	if (rc)
 		goto err_wait_credit;
 
-	if (info->transport_status != SMBD_CONNECTED) {
+	if (sc->status != SMBDIRECT_SOCKET_CONNECTED) {
 		log_outgoing(ERR, "disconnected not sending on wait_credit\n");
 		rc = -EAGAIN;
 		goto err_wait_credit;
@@ -860,9 +870,9 @@ static int smbd_post_send_iter(struct smbd_connection *info,
 wait_send_queue:
 	wait_event(info->wait_post_send,
 		atomic_read(&info->send_pending) < info->send_credit_target ||
-		info->transport_status != SMBD_CONNECTED);
+		sc->status != SMBDIRECT_SOCKET_CONNECTED);
 
-	if (info->transport_status != SMBD_CONNECTED) {
+	if (sc->status != SMBDIRECT_SOCKET_CONNECTED) {
 		log_outgoing(ERR, "disconnected not sending on wait_send_queue\n");
 		rc = -EAGAIN;
 		goto err_wait_send_queue;
@@ -889,8 +899,8 @@ static int smbd_post_send_iter(struct smbd_connection *info,
 			.nr_sge		= 1,
 			.max_sge	= SMBDIRECT_MAX_SEND_SGE,
 			.sge		= request->sge,
-			.device		= info->id->device,
-			.local_dma_lkey	= info->pd->local_dma_lkey,
+			.device		= sc->ib.dev,
+			.local_dma_lkey	= sc->ib.pd->local_dma_lkey,
 			.direction	= DMA_TO_DEVICE,
 		};
 
@@ -942,18 +952,18 @@ static int smbd_post_send_iter(struct smbd_connection *info,
 	if (!data_length)
 		header_length = offsetof(struct smbd_data_transfer, padding);
 
-	request->sge[0].addr = ib_dma_map_single(info->id->device,
+	request->sge[0].addr = ib_dma_map_single(sc->ib.dev,
 						 (void *)packet,
 						 header_length,
 						 DMA_TO_DEVICE);
-	if (ib_dma_mapping_error(info->id->device, request->sge[0].addr)) {
+	if (ib_dma_mapping_error(sc->ib.dev, request->sge[0].addr)) {
 		rc = -EIO;
 		request->sge[0].addr = 0;
 		goto err_dma;
 	}
 
 	request->sge[0].length = header_length;
-	request->sge[0].lkey = info->pd->local_dma_lkey;
+	request->sge[0].lkey = sc->ib.pd->local_dma_lkey;
 
 	rc = smbd_post_send(info, request);
 	if (!rc)
@@ -962,7 +972,7 @@ static int smbd_post_send_iter(struct smbd_connection *info,
 err_dma:
 	for (i = 0; i < request->num_sge; i++)
 		if (request->sge[i].addr)
-			ib_dma_unmap_single(info->id->device,
+			ib_dma_unmap_single(sc->ib.dev,
 					    request->sge[i].addr,
 					    request->sge[i].length,
 					    DMA_TO_DEVICE);
@@ -1007,17 +1017,18 @@ static int smbd_post_send_empty(struct smbd_connection *info)
 static int smbd_post_recv(
 		struct smbd_connection *info, struct smbd_response *response)
 {
+	struct smbdirect_socket *sc = &info->socket;
 	struct ib_recv_wr recv_wr;
 	int rc = -EIO;
 
 	response->sge.addr = ib_dma_map_single(
-				info->id->device, response->packet,
+				sc->ib.dev, response->packet,
 				info->max_receive_size, DMA_FROM_DEVICE);
-	if (ib_dma_mapping_error(info->id->device, response->sge.addr))
+	if (ib_dma_mapping_error(sc->ib.dev, response->sge.addr))
 		return rc;
 
 	response->sge.length = info->max_receive_size;
-	response->sge.lkey = info->pd->local_dma_lkey;
+	response->sge.lkey = sc->ib.pd->local_dma_lkey;
 
 	response->cqe.done = recv_done;
 
@@ -1026,9 +1037,9 @@ static int smbd_post_recv(
 	recv_wr.sg_list = &response->sge;
 	recv_wr.num_sge = 1;
 
-	rc = ib_post_recv(info->id->qp, &recv_wr, NULL);
+	rc = ib_post_recv(sc->ib.qp, &recv_wr, NULL);
 	if (rc) {
-		ib_dma_unmap_single(info->id->device, response->sge.addr,
+		ib_dma_unmap_single(sc->ib.dev, response->sge.addr,
 				    response->sge.length, DMA_FROM_DEVICE);
 		smbd_disconnect_rdma_connection(info);
 		log_rdma_recv(ERR, "ib_post_recv failed rc=%d\n", rc);
@@ -1186,9 +1197,10 @@ static struct smbd_response *get_receive_buffer(struct smbd_connection *info)
 static void put_receive_buffer(
 	struct smbd_connection *info, struct smbd_response *response)
 {
+	struct smbdirect_socket *sc = &info->socket;
 	unsigned long flags;
 
-	ib_dma_unmap_single(info->id->device, response->sge.addr,
+	ib_dma_unmap_single(sc->ib.dev, response->sge.addr,
 		response->sge.length, DMA_FROM_DEVICE);
 
 	spin_lock_irqsave(&info->receive_queue_lock, flags);
@@ -1288,6 +1300,7 @@ static void idle_connection_timer(struct work_struct *work)
 void smbd_destroy(struct TCP_Server_Info *server)
 {
 	struct smbd_connection *info = server->smbd_conn;
+	struct smbdirect_socket *sc;
 	struct smbd_response *response;
 	unsigned long flags;
 
@@ -1295,19 +1308,21 @@ void smbd_destroy(struct TCP_Server_Info *server)
 		log_rdma_event(INFO, "rdma session already destroyed\n");
 		return;
 	}
+	sc = &info->socket;
 
 	log_rdma_event(INFO, "destroying rdma session\n");
-	if (info->transport_status != SMBD_DISCONNECTED) {
-		rdma_disconnect(server->smbd_conn->id);
+	if (sc->status != SMBDIRECT_SOCKET_DISCONNECTED) {
+		rdma_disconnect(sc->rdma.cm_id);
 		log_rdma_event(INFO, "wait for transport being disconnected\n");
 		wait_event_interruptible(
 			info->disconn_wait,
-			info->transport_status == SMBD_DISCONNECTED);
+			sc->status == SMBDIRECT_SOCKET_DISCONNECTED);
 	}
 
 	log_rdma_event(INFO, "destroying qp\n");
-	ib_drain_qp(info->id->qp);
-	rdma_destroy_qp(info->id);
+	ib_drain_qp(sc->ib.qp);
+	rdma_destroy_qp(sc->rdma.cm_id);
+	sc->ib.qp = NULL;
 
 	log_rdma_event(INFO, "cancelling idle timer\n");
 	cancel_delayed_work_sync(&info->idle_timer_work);
@@ -1354,10 +1369,10 @@ void smbd_destroy(struct TCP_Server_Info *server)
 	}
 	destroy_mr_list(info);
 
-	ib_free_cq(info->send_cq);
-	ib_free_cq(info->recv_cq);
-	ib_dealloc_pd(info->pd);
-	rdma_destroy_id(info->id);
+	ib_free_cq(sc->ib.send_cq);
+	ib_free_cq(sc->ib.recv_cq);
+	ib_dealloc_pd(sc->ib.pd);
+	rdma_destroy_id(sc->rdma.cm_id);
 
 	/* free mempools */
 	mempool_destroy(info->request_mempool);
@@ -1366,7 +1381,7 @@ void smbd_destroy(struct TCP_Server_Info *server)
 	mempool_destroy(info->response_mempool);
 	kmem_cache_destroy(info->response_cache);
 
-	info->transport_status = SMBD_DESTROYED;
+	sc->status = SMBDIRECT_SOCKET_DESTROYED;
 
 	destroy_workqueue(info->workqueue);
 	log_rdma_event(INFO,  "rdma session destroyed\n");
@@ -1391,7 +1406,7 @@ int smbd_reconnect(struct TCP_Server_Info *server)
 	 * This is possible if transport is disconnected and we haven't received
 	 * notification from RDMA, but upper layer has detected timeout
 	 */
-	if (server->smbd_conn->transport_status == SMBD_CONNECTED) {
+	if (server->smbd_conn->socket.status == SMBDIRECT_SOCKET_CONNECTED) {
 		log_rdma_event(INFO, "disconnecting transport\n");
 		smbd_destroy(server);
 	}
@@ -1490,6 +1505,7 @@ static struct smbd_connection *_smbd_get_connection(
 {
 	int rc;
 	struct smbd_connection *info;
+	struct smbdirect_socket *sc;
 	struct rdma_conn_param conn_param;
 	struct ib_qp_init_attr qp_attr;
 	struct sockaddr_in *addr_in = (struct sockaddr_in *) dstaddr;
@@ -1499,29 +1515,30 @@ static struct smbd_connection *_smbd_get_connection(
 	info = kzalloc(sizeof(struct smbd_connection), GFP_KERNEL);
 	if (!info)
 		return NULL;
+	sc = &info->socket;
 
-	info->transport_status = SMBD_CONNECTING;
+	sc->status = SMBDIRECT_SOCKET_CONNECTING;
 	rc = smbd_ia_open(info, dstaddr, port);
 	if (rc) {
 		log_rdma_event(INFO, "smbd_ia_open rc=%d\n", rc);
 		goto create_id_failed;
 	}
 
-	if (smbd_send_credit_target > info->id->device->attrs.max_cqe ||
-	    smbd_send_credit_target > info->id->device->attrs.max_qp_wr) {
+	if (smbd_send_credit_target > sc->ib.dev->attrs.max_cqe ||
+	    smbd_send_credit_target > sc->ib.dev->attrs.max_qp_wr) {
 		log_rdma_event(ERR, "consider lowering send_credit_target = %d. Possible CQE overrun, device reporting max_cqe %d max_qp_wr %d\n",
 			       smbd_send_credit_target,
-			       info->id->device->attrs.max_cqe,
-			       info->id->device->attrs.max_qp_wr);
+			       sc->ib.dev->attrs.max_cqe,
+			       sc->ib.dev->attrs.max_qp_wr);
 		goto config_failed;
 	}
 
-	if (smbd_receive_credit_max > info->id->device->attrs.max_cqe ||
-	    smbd_receive_credit_max > info->id->device->attrs.max_qp_wr) {
+	if (smbd_receive_credit_max > sc->ib.dev->attrs.max_cqe ||
+	    smbd_receive_credit_max > sc->ib.dev->attrs.max_qp_wr) {
 		log_rdma_event(ERR, "consider lowering receive_credit_max = %d. Possible CQE overrun, device reporting max_cqe %d max_qp_wr %d\n",
 			       smbd_receive_credit_max,
-			       info->id->device->attrs.max_cqe,
-			       info->id->device->attrs.max_qp_wr);
+			       sc->ib.dev->attrs.max_cqe,
+			       sc->ib.dev->attrs.max_qp_wr);
 		goto config_failed;
 	}
 
@@ -1532,32 +1549,30 @@ static struct smbd_connection *_smbd_get_connection(
 	info->max_receive_size = smbd_max_receive_size;
 	info->keep_alive_interval = smbd_keep_alive_interval;
 
-	if (info->id->device->attrs.max_send_sge < SMBDIRECT_MAX_SEND_SGE ||
-	    info->id->device->attrs.max_recv_sge < SMBDIRECT_MAX_RECV_SGE) {
+	if (sc->ib.dev->attrs.max_send_sge < SMBDIRECT_MAX_SEND_SGE ||
+	    sc->ib.dev->attrs.max_recv_sge < SMBDIRECT_MAX_RECV_SGE) {
 		log_rdma_event(ERR,
 			"device %.*s max_send_sge/max_recv_sge = %d/%d too small\n",
 			IB_DEVICE_NAME_MAX,
-			info->id->device->name,
-			info->id->device->attrs.max_send_sge,
-			info->id->device->attrs.max_recv_sge);
+			sc->ib.dev->name,
+			sc->ib.dev->attrs.max_send_sge,
+			sc->ib.dev->attrs.max_recv_sge);
 		goto config_failed;
 	}
 
-	info->send_cq = NULL;
-	info->recv_cq = NULL;
-	info->send_cq =
-		ib_alloc_cq_any(info->id->device, info,
+	sc->ib.send_cq =
+		ib_alloc_cq_any(sc->ib.dev, info,
 				info->send_credit_target, IB_POLL_SOFTIRQ);
-	if (IS_ERR(info->send_cq)) {
-		info->send_cq = NULL;
+	if (IS_ERR(sc->ib.send_cq)) {
+		sc->ib.send_cq = NULL;
 		goto alloc_cq_failed;
 	}
 
-	info->recv_cq =
-		ib_alloc_cq_any(info->id->device, info,
+	sc->ib.recv_cq =
+		ib_alloc_cq_any(sc->ib.dev, info,
 				info->receive_credit_max, IB_POLL_SOFTIRQ);
-	if (IS_ERR(info->recv_cq)) {
-		info->recv_cq = NULL;
+	if (IS_ERR(sc->ib.recv_cq)) {
+		sc->ib.recv_cq = NULL;
 		goto alloc_cq_failed;
 	}
 
@@ -1571,29 +1586,30 @@ static struct smbd_connection *_smbd_get_connection(
 	qp_attr.cap.max_inline_data = 0;
 	qp_attr.sq_sig_type = IB_SIGNAL_REQ_WR;
 	qp_attr.qp_type = IB_QPT_RC;
-	qp_attr.send_cq = info->send_cq;
-	qp_attr.recv_cq = info->recv_cq;
+	qp_attr.send_cq = sc->ib.send_cq;
+	qp_attr.recv_cq = sc->ib.recv_cq;
 	qp_attr.port_num = ~0;
 
-	rc = rdma_create_qp(info->id, info->pd, &qp_attr);
+	rc = rdma_create_qp(sc->rdma.cm_id, sc->ib.pd, &qp_attr);
 	if (rc) {
 		log_rdma_event(ERR, "rdma_create_qp failed %i\n", rc);
 		goto create_qp_failed;
 	}
+	sc->ib.qp = sc->rdma.cm_id->qp;
 
 	memset(&conn_param, 0, sizeof(conn_param));
 	conn_param.initiator_depth = 0;
 
 	conn_param.responder_resources =
-		min(info->id->device->attrs.max_qp_rd_atom,
+		min(sc->ib.dev->attrs.max_qp_rd_atom,
 		    SMBD_CM_RESPONDER_RESOURCES);
 	info->responder_resources = conn_param.responder_resources;
 	log_rdma_mr(INFO, "responder_resources=%d\n",
 		info->responder_resources);
 
 	/* Need to send IRD/ORD in private data for iWARP */
-	info->id->device->ops.get_port_immutable(
-		info->id->device, info->id->port_num, &port_immutable);
+	sc->ib.dev->ops.get_port_immutable(
+		sc->ib.dev, sc->rdma.cm_id->port_num, &port_immutable);
 	if (port_immutable.core_cap_flags & RDMA_CORE_PORT_IWARP) {
 		ird_ord_hdr[0] = info->responder_resources;
 		ird_ord_hdr[1] = 1;
@@ -1614,16 +1630,16 @@ static struct smbd_connection *_smbd_get_connection(
 	init_waitqueue_head(&info->conn_wait);
 	init_waitqueue_head(&info->disconn_wait);
 	init_waitqueue_head(&info->wait_reassembly_queue);
-	rc = rdma_connect(info->id, &conn_param);
+	rc = rdma_connect(sc->rdma.cm_id, &conn_param);
 	if (rc) {
 		log_rdma_event(ERR, "rdma_connect() failed with %i\n", rc);
 		goto rdma_connect_failed;
 	}
 
 	wait_event_interruptible(
-		info->conn_wait, info->transport_status != SMBD_CONNECTING);
+		info->conn_wait, sc->status != SMBDIRECT_SOCKET_CONNECTING);
 
-	if (info->transport_status != SMBD_CONNECTED) {
+	if (sc->status != SMBDIRECT_SOCKET_CONNECTED) {
 		log_rdma_event(ERR, "rdma_connect failed port=%d\n", port);
 		goto rdma_connect_failed;
 	}
@@ -1674,26 +1690,26 @@ static struct smbd_connection *_smbd_get_connection(
 negotiation_failed:
 	cancel_delayed_work_sync(&info->idle_timer_work);
 	destroy_caches_and_workqueue(info);
-	info->transport_status = SMBD_NEGOTIATE_FAILED;
+	sc->status = SMBDIRECT_SOCKET_NEGOTIATE_FAILED;
 	init_waitqueue_head(&info->conn_wait);
-	rdma_disconnect(info->id);
+	rdma_disconnect(sc->rdma.cm_id);
 	wait_event(info->conn_wait,
-		info->transport_status == SMBD_DISCONNECTED);
+		sc->status == SMBDIRECT_SOCKET_DISCONNECTED);
 
 allocate_cache_failed:
 rdma_connect_failed:
-	rdma_destroy_qp(info->id);
+	rdma_destroy_qp(sc->rdma.cm_id);
 
 create_qp_failed:
 alloc_cq_failed:
-	if (info->send_cq)
-		ib_free_cq(info->send_cq);
-	if (info->recv_cq)
-		ib_free_cq(info->recv_cq);
+	if (sc->ib.send_cq)
+		ib_free_cq(sc->ib.send_cq);
+	if (sc->ib.recv_cq)
+		ib_free_cq(sc->ib.recv_cq);
 
 config_failed:
-	ib_dealloc_pd(info->pd);
-	rdma_destroy_id(info->id);
+	ib_dealloc_pd(sc->ib.pd);
+	rdma_destroy_id(sc->rdma.cm_id);
 
 create_id_failed:
 	kfree(info);
@@ -1733,6 +1749,7 @@ struct smbd_connection *smbd_get_connection(
 static int smbd_recv_buf(struct smbd_connection *info, char *buf,
 		unsigned int size)
 {
+	struct smbdirect_socket *sc = &info->socket;
 	struct smbd_response *response;
 	struct smbd_data_transfer *data_transfer;
 	int to_copy, to_read, data_read, offset;
@@ -1847,12 +1864,12 @@ static int smbd_recv_buf(struct smbd_connection *info, char *buf,
 	rc = wait_event_interruptible(
 		info->wait_reassembly_queue,
 		info->reassembly_data_length >= size ||
-			info->transport_status != SMBD_CONNECTED);
+			sc->status != SMBDIRECT_SOCKET_CONNECTED);
 	/* Don't return any data if interrupted */
 	if (rc)
 		return rc;
 
-	if (info->transport_status != SMBD_CONNECTED) {
+	if (sc->status != SMBDIRECT_SOCKET_CONNECTED) {
 		log_read(ERR, "disconnected\n");
 		return -ECONNABORTED;
 	}
@@ -1870,6 +1887,7 @@ static int smbd_recv_page(struct smbd_connection *info,
 		struct page *page, unsigned int page_offset,
 		unsigned int to_read)
 {
+	struct smbdirect_socket *sc = &info->socket;
 	int ret;
 	char *to_address;
 	void *page_address;
@@ -1878,7 +1896,7 @@ static int smbd_recv_page(struct smbd_connection *info,
 	ret = wait_event_interruptible(
 		info->wait_reassembly_queue,
 		info->reassembly_data_length >= to_read ||
-			info->transport_status != SMBD_CONNECTED);
+			sc->status != SMBDIRECT_SOCKET_CONNECTED);
 	if (ret)
 		return ret;
 
@@ -1953,12 +1971,13 @@ int smbd_send(struct TCP_Server_Info *server,
 	int num_rqst, struct smb_rqst *rqst_array)
 {
 	struct smbd_connection *info = server->smbd_conn;
+	struct smbdirect_socket *sc = &info->socket;
 	struct smb_rqst *rqst;
 	struct iov_iter iter;
 	unsigned int remaining_data_length, klen;
 	int rc, i, rqst_idx;
 
-	if (info->transport_status != SMBD_CONNECTED)
+	if (sc->status != SMBDIRECT_SOCKET_CONNECTED)
 		return -EAGAIN;
 
 	/*
@@ -2052,6 +2071,7 @@ static void smbd_mr_recovery_work(struct work_struct *work)
 {
 	struct smbd_connection *info =
 		container_of(work, struct smbd_connection, mr_recovery_work);
+	struct smbdirect_socket *sc = &info->socket;
 	struct smbd_mr *smbdirect_mr;
 	int rc;
 
@@ -2069,7 +2089,7 @@ static void smbd_mr_recovery_work(struct work_struct *work)
 			}
 
 			smbdirect_mr->mr = ib_alloc_mr(
-				info->pd, info->mr_type,
+				sc->ib.pd, info->mr_type,
 				info->max_frmr_depth);
 			if (IS_ERR(smbdirect_mr->mr)) {
 				log_rdma_mr(ERR, "ib_alloc_mr failed mr_type=%x max_frmr_depth=%x\n",
@@ -2098,12 +2118,13 @@ static void smbd_mr_recovery_work(struct work_struct *work)
 
 static void destroy_mr_list(struct smbd_connection *info)
 {
+	struct smbdirect_socket *sc = &info->socket;
 	struct smbd_mr *mr, *tmp;
 
 	cancel_work_sync(&info->mr_recovery_work);
 	list_for_each_entry_safe(mr, tmp, &info->mr_list, list) {
 		if (mr->state == MR_INVALIDATED)
-			ib_dma_unmap_sg(info->id->device, mr->sgt.sgl,
+			ib_dma_unmap_sg(sc->ib.dev, mr->sgt.sgl,
 				mr->sgt.nents, mr->dir);
 		ib_dereg_mr(mr->mr);
 		kfree(mr->sgt.sgl);
@@ -2120,6 +2141,7 @@ static void destroy_mr_list(struct smbd_connection *info)
  */
 static int allocate_mr_list(struct smbd_connection *info)
 {
+	struct smbdirect_socket *sc = &info->socket;
 	int i;
 	struct smbd_mr *smbdirect_mr, *tmp;
 
@@ -2135,7 +2157,7 @@ static int allocate_mr_list(struct smbd_connection *info)
 		smbdirect_mr = kzalloc(sizeof(*smbdirect_mr), GFP_KERNEL);
 		if (!smbdirect_mr)
 			goto cleanup_entries;
-		smbdirect_mr->mr = ib_alloc_mr(info->pd, info->mr_type,
+		smbdirect_mr->mr = ib_alloc_mr(sc->ib.pd, info->mr_type,
 					info->max_frmr_depth);
 		if (IS_ERR(smbdirect_mr->mr)) {
 			log_rdma_mr(ERR, "ib_alloc_mr failed mr_type=%x max_frmr_depth=%x\n",
@@ -2180,20 +2202,20 @@ static int allocate_mr_list(struct smbd_connection *info)
  */
 static struct smbd_mr *get_mr(struct smbd_connection *info)
 {
+	struct smbdirect_socket *sc = &info->socket;
 	struct smbd_mr *ret;
 	int rc;
 again:
 	rc = wait_event_interruptible(info->wait_mr,
 		atomic_read(&info->mr_ready_count) ||
-		info->transport_status != SMBD_CONNECTED);
+		sc->status != SMBDIRECT_SOCKET_CONNECTED);
 	if (rc) {
 		log_rdma_mr(ERR, "wait_event_interruptible rc=%x\n", rc);
 		return NULL;
 	}
 
-	if (info->transport_status != SMBD_CONNECTED) {
-		log_rdma_mr(ERR, "info->transport_status=%x\n",
-			info->transport_status);
+	if (sc->status != SMBDIRECT_SOCKET_CONNECTED) {
+		log_rdma_mr(ERR, "sc->status=%x\n", sc->status);
 		return NULL;
 	}
 
@@ -2246,6 +2268,7 @@ struct smbd_mr *smbd_register_mr(struct smbd_connection *info,
 				 struct iov_iter *iter,
 				 bool writing, bool need_invalidate)
 {
+	struct smbdirect_socket *sc = &info->socket;
 	struct smbd_mr *smbdirect_mr;
 	int rc, num_pages;
 	enum dma_data_direction dir;
@@ -2275,7 +2298,7 @@ struct smbd_mr *smbd_register_mr(struct smbd_connection *info,
 		    num_pages, iov_iter_count(iter), info->max_frmr_depth);
 	smbd_iter_to_mr(info, iter, &smbdirect_mr->sgt, info->max_frmr_depth);
 
-	rc = ib_dma_map_sg(info->id->device, smbdirect_mr->sgt.sgl,
+	rc = ib_dma_map_sg(sc->ib.dev, smbdirect_mr->sgt.sgl,
 			   smbdirect_mr->sgt.nents, dir);
 	if (!rc) {
 		log_rdma_mr(ERR, "ib_dma_map_sg num_pages=%x dir=%x rc=%x\n",
@@ -2311,7 +2334,7 @@ struct smbd_mr *smbd_register_mr(struct smbd_connection *info,
 	 * on IB_WR_REG_MR. Hardware enforces a barrier and order of execution
 	 * on the next ib_post_send when we actaully send I/O to remote peer
 	 */
-	rc = ib_post_send(info->id->qp, &reg_wr->wr, NULL);
+	rc = ib_post_send(sc->ib.qp, &reg_wr->wr, NULL);
 	if (!rc)
 		return smbdirect_mr;
 
@@ -2320,7 +2343,7 @@ struct smbd_mr *smbd_register_mr(struct smbd_connection *info,
 
 	/* If all failed, attempt to recover this MR by setting it MR_ERROR*/
 map_mr_error:
-	ib_dma_unmap_sg(info->id->device, smbdirect_mr->sgt.sgl,
+	ib_dma_unmap_sg(sc->ib.dev, smbdirect_mr->sgt.sgl,
 			smbdirect_mr->sgt.nents, smbdirect_mr->dir);
 
 dma_map_error:
@@ -2358,6 +2381,7 @@ int smbd_deregister_mr(struct smbd_mr *smbdirect_mr)
 {
 	struct ib_send_wr *wr;
 	struct smbd_connection *info = smbdirect_mr->conn;
+	struct smbdirect_socket *sc = &info->socket;
 	int rc = 0;
 
 	if (smbdirect_mr->need_invalidate) {
@@ -2371,7 +2395,7 @@ int smbd_deregister_mr(struct smbd_mr *smbdirect_mr)
 		wr->send_flags = IB_SEND_SIGNALED;
 
 		init_completion(&smbdirect_mr->invalidate_done);
-		rc = ib_post_send(info->id->qp, wr, NULL);
+		rc = ib_post_send(sc->ib.qp, wr, NULL);
 		if (rc) {
 			log_rdma_mr(ERR, "ib_post_send failed rc=%x\n", rc);
 			smbd_disconnect_rdma_connection(info);
@@ -2388,7 +2412,7 @@ int smbd_deregister_mr(struct smbd_mr *smbdirect_mr)
 
 	if (smbdirect_mr->state == MR_INVALIDATED) {
 		ib_dma_unmap_sg(
-			info->id->device, smbdirect_mr->sgt.sgl,
+			sc->ib.dev, smbdirect_mr->sgt.sgl,
 			smbdirect_mr->sgt.nents,
 			smbdirect_mr->dir);
 		smbdirect_mr->state = MR_READY;
diff --git a/fs/smb/client/smbdirect.h b/fs/smb/client/smbdirect.h
index c08e3665150d..c881e58c639d 100644
--- a/fs/smb/client/smbdirect.h
+++ b/fs/smb/client/smbdirect.h
@@ -15,6 +15,8 @@
 #include <rdma/rdma_cm.h>
 #include <linux/mempool.h>
 
+#include "../common/smbdirect/smbdirect_socket.h"
+
 extern int rdma_readwrite_threshold;
 extern int smbd_max_frmr_depth;
 extern int smbd_keep_alive_interval;
@@ -50,14 +52,8 @@ enum smbd_connection_status {
  * 5. mempools for allocating packets
  */
 struct smbd_connection {
-	enum smbd_connection_status transport_status;
-
-	/* RDMA related */
-	struct rdma_cm_id *id;
-	struct ib_qp_init_attr qp_attr;
-	struct ib_pd *pd;
-	struct ib_cq *send_cq, *recv_cq;
-	struct ib_device_attr dev_attr;
+	struct smbdirect_socket socket;
+
 	int ri_rc;
 	struct completion ri_done;
 	wait_queue_head_t conn_wait;
-- 
2.39.5




  parent reply	other threads:[~2025-08-12 18:03 UTC|newest]

Thread overview: 272+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-12 17:26 [PATCH 6.6 000/262] 6.6.102-rc1 review Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 001/262] ASoC: amd: yc: Add DMI quirk for HP Laptop 17 cp-2033dx Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 002/262] ethernet: intel: fix building with large NR_CPUS Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 003/262] ASoC: amd: yc: Add DMI entries to support HP 15-fb1xxx Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 004/262] ASoC: Intel: fix SND_SOC_SOF dependencies Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 005/262] ASoC: amd: yc: add DMI quirk for ASUS M6501RM Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 006/262] audit,module: restore audit logging in load failure case Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 007/262] fs_context: fix parameter name in infofc() macro Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 008/262] fs/ntfs3: cancle set bad inode after removing name fails Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 009/262] ublk: use vmalloc for ublk_devices __queues Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 010/262] hfsplus: make splice write available again Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 011/262] hfs: " Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 012/262] hfsplus: remove mutex_lock check in hfsplus_free_extents Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 013/262] Revert "fs/ntfs3: Replace inode_trylock with inode_lock" Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 014/262] gfs2: No more self recovery Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 015/262] ASoC: soc-dai: tidyup return value of snd_soc_xlate_tdm_slot_mask() Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 016/262] ASoC: ops: dynamically allocate struct snd_ctl_elem_value Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 017/262] ASoC: mediatek: use reserved memory or enable buffer pre-allocation Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 018/262] selftests: Fix errno checking in syscall_user_dispatch test Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 019/262] soc: qcom: QMI encoding/decoding for big endian Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 020/262] arm64: dts: qcom: sdm845: Expand IMEM region Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 021/262] arm64: dts: qcom: sc7180: " Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 022/262] arm64: dts: qcom: msm8976: Make blsp_dma controlled-remotely Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 023/262] ARM: dts: vfxxx: Correctly use two tuples for timer address Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 024/262] usb: host: xhci-plat: fix incorrect type for of_match variable in xhci_plat_probe() Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 025/262] usb: misc: apple-mfi-fastcharge: Make power supply names unique Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 026/262] spi: stm32: Check for cfg availability in stm32_spi_probe Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 027/262] staging: fbtft: fix potential memory leak in fbtft_framebuffer_alloc() Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 028/262] vmci: Prevent the dispatching of uninitialized payloads Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 029/262] pps: fix poll support Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 030/262] Revert "vmci: Prevent the dispatching of uninitialized payloads" Greg Kroah-Hartman
2025-08-12 17:26 ` [PATCH 6.6 031/262] powercap: dtpm_cpu: Fix NULL pointer dereference in get_pd_power_uw() Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 032/262] usb: early: xhci-dbc: Fix early_ioremap leak Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 033/262] arm: dts: ti: omap: Fixup pinheader typo Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 034/262] soc/tegra: cbb: Clear ERR_FORCE register with ERR_STATUS Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 035/262] ARM: dts: imx6ul-kontron-bl-common: Fix RTS polarity for RS485 interface Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 036/262] arm64: dts: imx8mm-beacon: Fix HS400 USDHC clock speed Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 037/262] arm64: dts: imx8mn-beacon: " Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 038/262] PM / devfreq: Check governor before using governor->name Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 039/262] cpufreq: intel_pstate: Always use HWP_DESIRED_PERF in passive mode Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 040/262] cpufreq: Initialize cpufreq-based frequency-invariance later Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 041/262] cpufreq: Init policy->rwsem before it may be possibly used Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 042/262] samples: mei: Fix building on musl libc Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 043/262] soc: qcom: pmic_glink: fix OF node leak Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 044/262] interconnect: qcom: sc8280xp: specify num_links for qnm_a1noc_cfg Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 045/262] interconnect: qcom: sc8180x: specify num_nodes Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 046/262] staging: nvec: Fix incorrect null termination of battery manufacturer Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 047/262] selftests/tracing: Fix false failure of subsystem event test Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 048/262] drm/rockchip: cleanup fb when drm_gem_fb_afbc_init failed Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 049/262] bpf, sockmap: Fix psock incorrectly pointing to sk Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 050/262] bpf, ktls: Fix data corruption when using bpf_msg_pop_data() in ktls Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 051/262] selftests/bpf: fix signedness bug in redir_partial() Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 052/262] net: ipv6: ip6mr: Fix in/out netdev to pass to the FORWARD chain Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 053/262] drm/vmwgfx: Fix Host-Backed userspace on Guest-Backed kernel Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 054/262] bpftool: Fix memory leak in dump_xx_nlmsg on realloc failure Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 055/262] caif: reduce stack size, again Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 056/262] wifi: rtw89: avoid NULL dereference when RX problematic packet on unsupported 6 GHz band Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 057/262] wifi: rtl818x: Kill URBs before clearing tx status queue Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 058/262] wifi: iwlwifi: Fix memory leak in iwl_mvm_init() Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 059/262] iwlwifi: Add missing check for alloc_ordered_workqueue Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 060/262] wifi: ath11k: clear initialized flag for deinit-ed srng lists Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 061/262] tcp: fix tcp_ofo_queue() to avoid including too much DUP SACK range Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 062/262] net/mlx5: Check device memory pointer before usage Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 063/262] net: dst: annotate data-races around dst->input Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 064/262] net: dst: annotate data-races around dst->output Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 065/262] kselftest/arm64: Fix check for setting new VLs in sve-ptrace Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 066/262] drm/msm/dpu: Fill in min_prefill_lines for SC8180X Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 067/262] m68k: Dont unregister boot console needlessly Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 068/262] drm/amd/pm/powerplay/hwmgr/smu_helper: fix order of mask and value Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 069/262] sched/psi: Optimize psi_group_change() cpu_clock() usage Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 070/262] fbcon: Fix outdated registered_fb reference in comment Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 071/262] netfilter: nf_tables: Drop dead code from fill_*_info routines Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 072/262] netfilter: nf_tables: adjust lockdep assertions handling Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 073/262] arch: powerpc: defconfig: Drop obsolete CONFIG_NET_CLS_TCINDEX Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 074/262] um: rtc: Avoid shadowing err in uml_rtc_start() Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 075/262] net/sched: Restrict conditions for adding duplicating netems to qdisc tree Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 076/262] net_sched: act_ctinfo: use atomic64_t for three counters Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 077/262] xen/gntdev: remove struct gntdev_copy_batch from stack Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 078/262] tcp: call tcp_measure_rcv_mss() for ooo packets Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 079/262] wifi: rtl8xxxu: Fix RX skb size for aggregation disabled Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 080/262] mwl8k: Add missing check after DMA map Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 081/262] iommu/amd: Fix geometry.aperture_end for V2 tables Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 082/262] wifi: mac80211: reject TDLS operations when station is not associated Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 083/262] wifi: plfxlc: Fix error handling in usb driver probe Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 084/262] wifi: mac80211: Do not schedule stopped TXQs Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 085/262] wifi: mac80211: Dont call fq_flow_idx() for management frames Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 086/262] wifi: mac80211: Check 802.11 encaps offloading in ieee80211_tx_h_select_key() Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 087/262] Reapply "wifi: mac80211: Update skbs control block key in ieee80211_tx_dequeue()" Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 088/262] wifi: ath12k: fix endianness handling while accessing wmi service bit Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 089/262] wifi: brcmfmac: fix P2P discovery failure in P2P peer due to missing P2P IE Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 090/262] wifi: mac80211: Write cnt before copying in ieee80211_copy_rnr_beacon() Greg Kroah-Hartman
2025-08-12 17:27 ` [PATCH 6.6 091/262] kcsan: test: Initialize dummy variable Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 092/262] Bluetooth: hci_event: Mask data status from LE ext adv reports Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 093/262] bpf: Disable migration in nf_hook_run_bpf() Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 094/262] tools/rv: Do not skip idle in trace Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 095/262] can: peak_usb: fix USB FD devices potential malfunction Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 096/262] can: kvaser_pciefd: Store device channel index Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 097/262] can: kvaser_usb: Assign netdev.dev_port based on " Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 098/262] netfilter: xt_nfacct: dont assume acct name is null-terminated Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 099/262] net/mlx5e: Clear Read-Only port buffer size in PBMC before update Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 100/262] net/mlx5e: Remove skb secpath if xfrm state is not found Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 101/262] selftests: rtnetlink.sh: remove esp4_offload after test Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 102/262] vrf: Drop existing dst reference in vrf_ip6_input_dst Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 103/262] ipv6: prevent infinite loop in rt6_nlmsg_size() Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 104/262] ipv6: fix possible infinite loop in fib6_info_uses_dev() Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 105/262] ipv6: annotate data-races around rt->fib6_nsiblings Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 106/262] bpf/preload: Dont select USERMODE_DRIVER Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 107/262] PCI: rockchip-host: Fix "Unexpected Completion" log message Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 108/262] crypto: sun8i-ce - fix nents passed to dma_unmap_sg() Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 109/262] crypto: qat - use unmanaged allocation for dc_data Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 110/262] crypto: marvell/cesa - Fix engine load inaccuracy Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 111/262] mtd: fix possible integer overflow in erase_xfer() Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 112/262] clk: davinci: Add NULL check in davinci_lpsc_clk_register() Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 113/262] media: v4l2-ctrls: Fix H264 SEPARATE_COLOUR_PLANE check Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 114/262] clk: xilinx: vcu: unregister pll_post only if registered correctly Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 115/262] power: supply: cpcap-charger: Fix null check for power_supply_get_by_name Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 116/262] power: supply: max14577: Handle NULL pdata when CONFIG_OF is not set Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 117/262] crypto: arm/aes-neonbs - work around gcc-15 warning Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 118/262] PCI: endpoint: pci-epf-vntb: Return -ENOENT if pci_epc_get_next_free_bar() fails Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 119/262] pinctrl: sunxi: Fix memory leak on krealloc failure Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 120/262] fanotify: sanitize handle_type values when reporting fid Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 121/262] clk: clk-axi-clkgen: fix fpfd_max frequency for zynq Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 122/262] Fix dma_unmap_sg() nents value Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 123/262] perf tools: Fix use-after-free in help_unknown_cmd() Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 124/262] perf dso: Add missed dso__put to dso__load_kcore Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 125/262] perf sched: Free thread->priv using priv_destructor Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 126/262] perf sched: Fix memory leaks for evsel->priv in timehist Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 127/262] perf sched: Fix memory leaks in perf sched latency Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 128/262] crypto: inside-secure - Fix `dma_unmap_sg()` nents value Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 129/262] crypto: ccp - Fix crash when rebind ccp device for ccp.ko Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 130/262] RDMA/hns: Fix -Wframe-larger-than issue Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 131/262] kernel: trace: preemptirq_delay_test: use offstack cpu mask Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 132/262] proc: use the same treatment to check proc_lseek as ones for proc_read_iter et.al Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 133/262] pinmux: fix race causing mux_owner NULL with active mux_usecount Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 134/262] perf tests bp_account: Fix leaked file descriptor Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 135/262] clk: sunxi-ng: v3s: Fix de clock definition Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 136/262] scsi: ibmvscsi_tgt: Fix dma_unmap_sg() nents value Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 137/262] scsi: elx: efct: " Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 138/262] scsi: mvsas: " Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 139/262] scsi: isci: " Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 140/262] watchdog: ziirave_wdt: check record length in ziirave_firm_verify() Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 141/262] hwrng: mtk - handle devm_pm_runtime_enable errors Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 142/262] crypto: keembay - Fix dma_unmap_sg() nents value Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 143/262] crypto: img-hash " Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 144/262] soundwire: stream: restore params when prepare ports fail Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 145/262] PCI: endpoint: pci-epf-vntb: Fix the incorrect usage of __iomem attribute Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 146/262] fs/orangefs: Allow 2 more characters in do_c_string() Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 147/262] dmaengine: mv_xor: Fix missing check after DMA map and missing unmap Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 148/262] dmaengine: nbpfaxi: Add missing check after DMA map Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 149/262] ASoC: fsl_xcvr: get channel status data when PHY is not exists Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 150/262] sh: Do not use hyphen in exported variable name Greg Kroah-Hartman
2025-08-12 17:28 ` [PATCH 6.6 151/262] perf tools: Remove libtraceevent in .gitignore Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 152/262] crypto: qat - fix DMA direction for compression on GEN2 devices Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 153/262] crypto: qat - fix seq_file position update in adf_ring_next() Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 154/262] fbdev: imxfb: Check fb_add_videomode to prevent null-ptr-deref Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 155/262] jfs: fix metapage reference count leak in dbAllocCtl Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 156/262] mtd: rawnand: atmel: Fix dma_mapping_error() address Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 157/262] mtd: rawnand: rockchip: Add missing check after DMA map Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 158/262] mtd: rawnand: atmel: set pmecc data setup time Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 159/262] vhost-scsi: Fix log flooding with target does not exist errors Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 160/262] bpf: Check flow_dissector ctx accesses are aligned Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 161/262] bpf: Check netfilter " Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 162/262] apparmor: ensure WB_HISTORY_SIZE value is a power of 2 Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 163/262] apparmor: fix loop detection used in conflicting attachment resolution Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 164/262] module: Restore the moduleparam prefix length check Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 165/262] ucount: fix atomic_long_inc_below() argument type Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 166/262] rtc: ds1307: fix incorrect maximum clock rate handling Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 167/262] rtc: hym8563: " Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 168/262] rtc: nct3018y: " Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 169/262] rtc: pcf85063: " Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 170/262] rtc: pcf8563: " Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 171/262] rtc: rv3028: " Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 172/262] f2fs: fix KMSAN uninit-value in extent_info usage Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 173/262] f2fs: doc: fix wrong quota mount option description Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 174/262] f2fs: fix to avoid UAF in f2fs_sync_inode_meta() Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 175/262] f2fs: fix to avoid panic in f2fs_evict_inode Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 176/262] f2fs: fix to avoid out-of-boundary access in devs.path Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 177/262] f2fs: vm_unmap_ram() may be called from an invalid context Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 178/262] f2fs: fix to update upper_p in __get_secs_required() correctly Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 179/262] f2fs: fix to calculate dirty data during has_not_enough_free_secs() Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 180/262] f2fs: fix to trigger foreground gc during f2fs_map_blocks() in lfs mode Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 181/262] vfio: Fix unbalanced vfio_df_close call in no-iommu mode Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 182/262] vfio: Prevent open_count decrement to negative Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 183/262] vfio/pds: Fix missing detach_ioas op Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 184/262] vfio/pci: Separate SR-IOV VF dev_set Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 185/262] scsi: mpt3sas: Fix a fw_event memory leak Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 186/262] scsi: Revert "scsi: iscsi: Fix HW conn removal use after free" Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 187/262] scsi: ufs: core: Use link recovery when h8 exit fails during runtime resume Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 188/262] scsi: sd: Make sd shutdown issue START STOP UNIT appropriately Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 189/262] kconfig: qconf: fix ConfigList::updateListAllforAll() Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 190/262] sched/psi: Fix psi_seq initialization Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 191/262] PCI: pnv_php: Clean up allocated IRQs on unplug Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 192/262] PCI: pnv_php: Work around switches with broken presence detection Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 193/262] powerpc/eeh: Export eeh_unfreeze_pe() Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 194/262] powerpc/eeh: Make EEH driver device hotplug safe Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 195/262] PCI: pnv_php: Fix surprise plug detection and recovery Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 196/262] pNFS/flexfiles: dont attempt pnfs on fatal DS errors Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 197/262] sched: Add test_and_clear_wake_up_bit() and atomic_dec_and_wake_up() Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 198/262] NFS: Fix wakeup of __nfs_lookup_revalidate() in unblock_revalidate() Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 199/262] NFS: Fix filehandle bounds checking in nfs_fh_to_dentry() Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 200/262] NFSv4.2: another fix for listxattr Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 201/262] NFS: Fixup allocation flags for nfsiods __GFP_NORETRY Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 202/262] md/md-cluster: handle REMOVE message earlier Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 203/262] netpoll: prevent hanging NAPI when netcons gets enabled Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 204/262] phy: mscc: Fix parsing of unicast frames Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 205/262] net: ipa: add IPA v5.1 and v5.5 to ipa_version_string() Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 206/262] pptp: ensure minimal skb length in pptp_xmit() Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 207/262] netlink: specs: ethtool: fix module EEPROM input/output arguments Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 208/262] net/mlx5: Correctly set gso_segs when LRO is used Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 209/262] ipv6: reject malicious packets in ipv6_gso_segment() Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 210/262] net: drop UFO packets in udp_rcv_segment() Greg Kroah-Hartman
2025-08-12 17:29 ` [PATCH 6.6 211/262] net/sched: taprio: enforce minimum value for picos_per_byte Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 212/262] sunrpc: fix client side handling of tls alerts Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 213/262] benet: fix BUG when creating VFs Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 214/262] net/sched: mqprio: fix stack out-of-bounds write in tc entry parsing Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 215/262] irqchip: Build IMX_MU_MSI only on ARM Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 216/262] ALSA: hda/ca0132: Fix missing error handling in ca0132_alt_select_out() Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 217/262] smb: server: remove separate empty_recvmsg_queue Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 218/262] smb: server: make sure we call ib_dma_unmap_single() only if we called ib_dma_map_single already Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 219/262] smb: server: let recv_done() consistently call put_recvmsg/smb_direct_disconnect_rdma_connection Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 220/262] smb: server: let recv_done() avoid touching data_transfer after cleanup/move Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 221/262] smb: client: Use min() macro Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 222/262] smb: client: Correct typos in multiple comments across various files Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 223/262] smb: smbdirect: add smbdirect_socket.h Greg Kroah-Hartman
2025-08-12 17:30 ` Greg Kroah-Hartman [this message]
2025-08-12 17:30 ` [PATCH 6.6 225/262] smb: client: let send_done() cleanup before calling smbd_disconnect_rdma_connection() Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 226/262] smb: client: make sure we call ib_dma_unmap_single() only if we called ib_dma_map_single already Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 227/262] smb: client: let recv_done() cleanup before notifying the callers Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 228/262] pptp: fix pptp_xmit() error path Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 229/262] smb: client: return an error if rdma_connect does not return within 5 seconds Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 230/262] sunrpc: fix handling of server side tls alerts Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 231/262] perf/core: Dont leak AUX buffer refcount on allocation failure Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 232/262] perf/core: Exit early on perf_mmap() fail Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 233/262] perf/core: Prevent VMA split of buffer mappings Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 234/262] selftests/perf_events: Add a mmap() correctness test Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 235/262] net/packet: fix a race in packet_set_ring() and packet_notifier() Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 236/262] vsock: Do not allow binding to VMADDR_PORT_ANY Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 237/262] ksmbd: fix null pointer dereference error in generate_encryptionkey Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 238/262] ksmbd: fix Preauh_HashValue race condition Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 239/262] ksmbd: fix corrupted mtime and ctime in smb2_open Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 240/262] ksmbd: limit repeated connections from clients with the same IP Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 241/262] smb: server: Fix extension string in ksmbd_extract_shortname() Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 242/262] USB: serial: option: add Foxconn T99W709 Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 243/262] i2c: stm32f7: Use devm_clk_get_enabled() Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 244/262] i2c: stm32f7: use dev_err_probe upon calls of devm_request_irq Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 245/262] i2c: stm32f7: perform most of irq job in threaded handler Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 246/262] i2c: stm32f7: simplify status messages in case of errors Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 247/262] i2c: stm32f7: unmap DMA mapped buffer Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 248/262] sched/core: Remove ifdeffery for saved_state Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 249/262] freezer,sched: Use saved_state to reduce some spurious wakeups Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 250/262] freezer,sched: Do not restore saved_state of a thawed task Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 251/262] freezer,sched: Clean saved_state when restoring it during thaw Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 252/262] sched,freezer: Remove unnecessary warning in __thaw_task Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 253/262] Bluetooth: btusb: Add USB ID 3625:010b for TP-LINK Archer TX10UB Nano Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 254/262] net: usbnet: Avoid potential RCU stall on LINK_CHANGE event Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 255/262] net: usbnet: Fix the wrong netif_carrier_on() call Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 256/262] x86/sev: Evict cache lines during SNP memory validation Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 257/262] ALSA: intel_hdmi: Fix off-by-one error in __hdmi_lpe_audio_probe() Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 258/262] ALSA: scarlett2: Add retry on -EPROTO from scarlett2_usb_tx() Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 259/262] x86/fpu: Delay instruction pointer fixup until after warning Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 260/262] MIPS: mm: tlb-r4k: Uniquify TLB entries on init Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 261/262] mm/hmm: move pmd_to_hmm_pfn_flags() to the respective #ifdeffery Greg Kroah-Hartman
2025-08-12 17:30 ` [PATCH 6.6 262/262] usb: gadget : fix use-after-free in composite_dev_cleanup() Greg Kroah-Hartman
2025-08-12 19:56 ` [PATCH 6.6 000/262] 6.6.102-rc1 review Brett A C Sheffield
2025-08-12 21:29 ` Florian Fainelli
2025-08-13  1:47 ` Peter Schneider
2025-08-13 15:12 ` Shuah Khan
2025-08-13 15:48 ` Jon Hunter
2025-08-13 21:49 ` Ron Economos
2025-08-14 10:10 ` Naresh Kamboju
2025-08-14 11:59 ` Mark Brown
2025-08-14 14:39 ` Miguel Ojeda

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=20250812173002.688803591@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=hyc.lee@gmail.com \
    --cc=linkinjeon@kernel.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=longli@microsoft.com \
    --cc=meetakshisetiyaoss@gmail.com \
    --cc=metze@samba.org \
    --cc=patches@lists.linux.dev \
    --cc=samba-technical@lists.samba.org \
    --cc=sashal@kernel.org \
    --cc=smfrench@gmail.com \
    --cc=stable@vger.kernel.org \
    --cc=stfrench@microsoft.com \
    --cc=tom@talpey.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox