Linux kernel -stable discussions
 help / color / mirror / Atom feed
From: Namjae Jeon <linkinjeon@kernel.org>
To: gregkh@linuxfoundation.org, stable@vger.kernel.org
Cc: smfrench@gmail.com, Hyunchul Lee <hyc.lee@gmail.com>,
	Namjae Jeon <linkinjeon@kernel.org>,
	Steve French <stfrench@microsoft.com>
Subject: [PATCH 5.15.y 034/154] ksmbd: smbd: introduce read/write credits for RDMA read/write
Date: Tue, 19 Dec 2023 00:32:54 +0900	[thread overview]
Message-ID: <20231218153454.8090-35-linkinjeon@kernel.org> (raw)
In-Reply-To: <20231218153454.8090-1-linkinjeon@kernel.org>

From: Hyunchul Lee <hyc.lee@gmail.com>

[ Upstream commit ddbdc861e37c168cf2fb8a7b7477f5d18b4daf76 ]

SMB2_READ/SMB2_WRITE request has to be granted the number
of rw credits, the pages the request wants to transfer
/ the maximum pages which can be registered with one
MR to read and write a file.
And allocate enough RDMA resources for the maximum
number of rw credits allowed by ksmbd.

Signed-off-by: Hyunchul Lee <hyc.lee@gmail.com>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
---
 fs/ksmbd/transport_rdma.c | 118 ++++++++++++++++++++++----------------
 1 file changed, 70 insertions(+), 48 deletions(-)

diff --git a/fs/ksmbd/transport_rdma.c b/fs/ksmbd/transport_rdma.c
index 991eefe7fe1f..411ea62712f1 100644
--- a/fs/ksmbd/transport_rdma.c
+++ b/fs/ksmbd/transport_rdma.c
@@ -82,8 +82,6 @@ static int smb_direct_max_receive_size = 8192;
 
 static int smb_direct_max_read_write_size = SMBD_DEFAULT_IOSIZE;
 
-static int smb_direct_max_outstanding_rw_ops = 8;
-
 static LIST_HEAD(smb_direct_device_list);
 static DEFINE_RWLOCK(smb_direct_device_lock);
 
@@ -147,10 +145,12 @@ struct smb_direct_transport {
 	atomic_t		send_credits;
 	spinlock_t		lock_new_recv_credits;
 	int			new_recv_credits;
-	atomic_t		rw_avail_ops;
+	int			max_rw_credits;
+	int			pages_per_rw_credit;
+	atomic_t		rw_credits;
 
 	wait_queue_head_t	wait_send_credits;
-	wait_queue_head_t	wait_rw_avail_ops;
+	wait_queue_head_t	wait_rw_credits;
 
 	mempool_t		*sendmsg_mempool;
 	struct kmem_cache	*sendmsg_cache;
@@ -383,7 +383,7 @@ static struct smb_direct_transport *alloc_transport(struct rdma_cm_id *cm_id)
 	t->reassembly_queue_length = 0;
 	init_waitqueue_head(&t->wait_reassembly_queue);
 	init_waitqueue_head(&t->wait_send_credits);
-	init_waitqueue_head(&t->wait_rw_avail_ops);
+	init_waitqueue_head(&t->wait_rw_credits);
 
 	spin_lock_init(&t->receive_credit_lock);
 	spin_lock_init(&t->recvmsg_queue_lock);
@@ -989,18 +989,19 @@ static int smb_direct_flush_send_list(struct smb_direct_transport *t,
 }
 
 static int wait_for_credits(struct smb_direct_transport *t,
-			    wait_queue_head_t *waitq, atomic_t *credits)
+			    wait_queue_head_t *waitq, atomic_t *total_credits,
+			    int needed)
 {
 	int ret;
 
 	do {
-		if (atomic_dec_return(credits) >= 0)
+		if (atomic_sub_return(needed, total_credits) >= 0)
 			return 0;
 
-		atomic_inc(credits);
+		atomic_add(needed, total_credits);
 		ret = wait_event_interruptible(*waitq,
-					       atomic_read(credits) > 0 ||
-						t->status != SMB_DIRECT_CS_CONNECTED);
+					       atomic_read(total_credits) >= needed ||
+					       t->status != SMB_DIRECT_CS_CONNECTED);
 
 		if (t->status != SMB_DIRECT_CS_CONNECTED)
 			return -ENOTCONN;
@@ -1021,7 +1022,19 @@ static int wait_for_send_credits(struct smb_direct_transport *t,
 			return ret;
 	}
 
-	return wait_for_credits(t, &t->wait_send_credits, &t->send_credits);
+	return wait_for_credits(t, &t->wait_send_credits, &t->send_credits, 1);
+}
+
+static int wait_for_rw_credits(struct smb_direct_transport *t, int credits)
+{
+	return wait_for_credits(t, &t->wait_rw_credits, &t->rw_credits, credits);
+}
+
+static int calc_rw_credits(struct smb_direct_transport *t,
+			   char *buf, unsigned int len)
+{
+	return DIV_ROUND_UP(get_buf_page_count(buf, len),
+			    t->pages_per_rw_credit);
 }
 
 static int smb_direct_create_header(struct smb_direct_transport *t,
@@ -1337,8 +1350,8 @@ static void read_write_done(struct ib_cq *cq, struct ib_wc *wc,
 		smb_direct_disconnect_rdma_connection(t);
 	}
 
-	if (atomic_inc_return(&t->rw_avail_ops) > 0)
-		wake_up(&t->wait_rw_avail_ops);
+	if (atomic_inc_return(&t->rw_credits) > 0)
+		wake_up(&t->wait_rw_credits);
 
 	rdma_rw_ctx_destroy(&msg->rw_ctx, t->qp, t->qp->port,
 			    msg->sg_list, msg->sgt.nents, dir);
@@ -1369,8 +1382,10 @@ static int smb_direct_rdma_xmit(struct smb_direct_transport *t,
 	struct ib_send_wr *first_wr = NULL;
 	u32 remote_key = le32_to_cpu(desc[0].token);
 	u64 remote_offset = le64_to_cpu(desc[0].offset);
+	int credits_needed;
 
-	ret = wait_for_credits(t, &t->wait_rw_avail_ops, &t->rw_avail_ops);
+	credits_needed = calc_rw_credits(t, buf, buf_len);
+	ret = wait_for_rw_credits(t, credits_needed);
 	if (ret < 0)
 		return ret;
 
@@ -1378,7 +1393,7 @@ static int smb_direct_rdma_xmit(struct smb_direct_transport *t,
 	msg = kmalloc(offsetof(struct smb_direct_rdma_rw_msg, sg_list) +
 		      sizeof(struct scatterlist) * SG_CHUNK_SIZE, GFP_KERNEL);
 	if (!msg) {
-		atomic_inc(&t->rw_avail_ops);
+		atomic_add(credits_needed, &t->rw_credits);
 		return -ENOMEM;
 	}
 
@@ -1387,7 +1402,7 @@ static int smb_direct_rdma_xmit(struct smb_direct_transport *t,
 				     get_buf_page_count(buf, buf_len),
 				     msg->sg_list, SG_CHUNK_SIZE);
 	if (ret) {
-		atomic_inc(&t->rw_avail_ops);
+		atomic_add(credits_needed, &t->rw_credits);
 		kfree(msg);
 		return -ENOMEM;
 	}
@@ -1423,7 +1438,7 @@ static int smb_direct_rdma_xmit(struct smb_direct_transport *t,
 	return 0;
 
 err:
-	atomic_inc(&t->rw_avail_ops);
+	atomic_add(credits_needed, &t->rw_credits);
 	if (first_wr)
 		rdma_rw_ctx_destroy(&msg->rw_ctx, t->qp, t->qp->port,
 				    msg->sg_list, msg->sgt.nents,
@@ -1648,11 +1663,19 @@ static int smb_direct_prepare_negotiation(struct smb_direct_transport *t)
 	return ret;
 }
 
+static unsigned int smb_direct_get_max_fr_pages(struct smb_direct_transport *t)
+{
+	return min_t(unsigned int,
+		     t->cm_id->device->attrs.max_fast_reg_page_list_len,
+		     256);
+}
+
 static int smb_direct_init_params(struct smb_direct_transport *t,
 				  struct ib_qp_cap *cap)
 {
 	struct ib_device *device = t->cm_id->device;
-	int max_send_sges, max_pages, max_rw_wrs, max_send_wrs;
+	int max_send_sges, max_rw_wrs, max_send_wrs;
+	unsigned int max_sge_per_wr, wrs_per_credit;
 
 	/* need 2 more sge. because a SMB_DIRECT header will be mapped,
 	 * and maybe a send buffer could be not page aligned.
@@ -1664,25 +1687,31 @@ static int smb_direct_init_params(struct smb_direct_transport *t,
 		return -EINVAL;
 	}
 
-	/*
-	 * allow smb_direct_max_outstanding_rw_ops of in-flight RDMA
-	 * read/writes. HCA guarantees at least max_send_sge of sges for
-	 * a RDMA read/write work request, and if memory registration is used,
-	 * we need reg_mr, local_inv wrs for each read/write.
+	/* Calculate the number of work requests for RDMA R/W.
+	 * The maximum number of pages which can be registered
+	 * with one Memory region can be transferred with one
+	 * R/W credit. And at least 4 work requests for each credit
+	 * are needed for MR registration, RDMA R/W, local & remote
+	 * MR invalidation.
 	 */
 	t->max_rdma_rw_size = smb_direct_max_read_write_size;
-	max_pages = DIV_ROUND_UP(t->max_rdma_rw_size, PAGE_SIZE) + 1;
-	max_rw_wrs = DIV_ROUND_UP(max_pages, SMB_DIRECT_MAX_SEND_SGES);
-	max_rw_wrs += rdma_rw_mr_factor(device, t->cm_id->port_num,
-			max_pages) * 2;
-	max_rw_wrs *= smb_direct_max_outstanding_rw_ops;
+	t->pages_per_rw_credit = smb_direct_get_max_fr_pages(t);
+	t->max_rw_credits = DIV_ROUND_UP(t->max_rdma_rw_size,
+					 (t->pages_per_rw_credit - 1) *
+					 PAGE_SIZE);
+
+	max_sge_per_wr = min_t(unsigned int, device->attrs.max_send_sge,
+			       device->attrs.max_sge_rd);
+	wrs_per_credit = max_t(unsigned int, 4,
+			       DIV_ROUND_UP(t->pages_per_rw_credit,
+					    max_sge_per_wr) + 1);
+	max_rw_wrs = t->max_rw_credits * wrs_per_credit;
 
 	max_send_wrs = smb_direct_send_credit_target + max_rw_wrs;
 	if (max_send_wrs > device->attrs.max_cqe ||
 	    max_send_wrs > device->attrs.max_qp_wr) {
-		pr_err("consider lowering send_credit_target = %d, or max_outstanding_rw_ops = %d\n",
-		       smb_direct_send_credit_target,
-		       smb_direct_max_outstanding_rw_ops);
+		pr_err("consider lowering send_credit_target = %d\n",
+		       smb_direct_send_credit_target);
 		pr_err("Possible CQE overrun, device reporting max_cqe %d max_qp_wr %d\n",
 		       device->attrs.max_cqe, device->attrs.max_qp_wr);
 		return -EINVAL;
@@ -1717,7 +1746,7 @@ static int smb_direct_init_params(struct smb_direct_transport *t,
 
 	t->send_credit_target = smb_direct_send_credit_target;
 	atomic_set(&t->send_credits, 0);
-	atomic_set(&t->rw_avail_ops, smb_direct_max_outstanding_rw_ops);
+	atomic_set(&t->rw_credits, t->max_rw_credits);
 
 	t->max_send_size = smb_direct_max_send_size;
 	t->max_recv_size = smb_direct_max_receive_size;
@@ -1725,12 +1754,10 @@ static int smb_direct_init_params(struct smb_direct_transport *t,
 
 	cap->max_send_wr = max_send_wrs;
 	cap->max_recv_wr = t->recv_credit_max;
-	cap->max_send_sge = SMB_DIRECT_MAX_SEND_SGES;
+	cap->max_send_sge = max_sge_per_wr;
 	cap->max_recv_sge = SMB_DIRECT_MAX_RECV_SGES;
 	cap->max_inline_data = 0;
-	cap->max_rdma_ctxs =
-		rdma_rw_mr_factor(device, t->cm_id->port_num, max_pages) *
-		smb_direct_max_outstanding_rw_ops;
+	cap->max_rdma_ctxs = t->max_rw_credits;
 	return 0;
 }
 
@@ -1823,7 +1850,8 @@ static int smb_direct_create_qpair(struct smb_direct_transport *t,
 	}
 
 	t->send_cq = ib_alloc_cq(t->cm_id->device, t,
-				 t->send_credit_target, 0, IB_POLL_WORKQUEUE);
+				 smb_direct_send_credit_target + cap->max_rdma_ctxs,
+				 0, IB_POLL_WORKQUEUE);
 	if (IS_ERR(t->send_cq)) {
 		pr_err("Can't create RDMA send CQ\n");
 		ret = PTR_ERR(t->send_cq);
@@ -1832,8 +1860,7 @@ static int smb_direct_create_qpair(struct smb_direct_transport *t,
 	}
 
 	t->recv_cq = ib_alloc_cq(t->cm_id->device, t,
-				 cap->max_send_wr + cap->max_rdma_ctxs,
-				 0, IB_POLL_WORKQUEUE);
+				 t->recv_credit_max, 0, IB_POLL_WORKQUEUE);
 	if (IS_ERR(t->recv_cq)) {
 		pr_err("Can't create RDMA recv CQ\n");
 		ret = PTR_ERR(t->recv_cq);
@@ -1862,17 +1889,12 @@ static int smb_direct_create_qpair(struct smb_direct_transport *t,
 
 	pages_per_rw = DIV_ROUND_UP(t->max_rdma_rw_size, PAGE_SIZE) + 1;
 	if (pages_per_rw > t->cm_id->device->attrs.max_sgl_rd) {
-		int pages_per_mr, mr_count;
-
-		pages_per_mr = min_t(int, pages_per_rw,
-				     t->cm_id->device->attrs.max_fast_reg_page_list_len);
-		mr_count = DIV_ROUND_UP(pages_per_rw, pages_per_mr) *
-			atomic_read(&t->rw_avail_ops);
-		ret = ib_mr_pool_init(t->qp, &t->qp->rdma_mrs, mr_count,
-				      IB_MR_TYPE_MEM_REG, pages_per_mr, 0);
+		ret = ib_mr_pool_init(t->qp, &t->qp->rdma_mrs,
+				      t->max_rw_credits, IB_MR_TYPE_MEM_REG,
+				      t->pages_per_rw_credit, 0);
 		if (ret) {
 			pr_err("failed to init mr pool count %d pages %d\n",
-			       mr_count, pages_per_mr);
+			       t->max_rw_credits, t->pages_per_rw_credit);
 			goto err;
 		}
 	}
-- 
2.25.1


  parent reply	other threads:[~2023-12-18 15:37 UTC|newest]

Thread overview: 158+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-18 15:32 [PATCH 5.15.y 000/154] ksmbd backport patches for 5.15.y Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 001/154] ksmbd: use ksmbd_req_buf_next() in ksmbd_verify_smb_message() Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 002/154] ksmdb: use cmd helper variable in smb2_get_ksmbd_tcon() Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 003/154] ksmbd: Remove redundant 'flush_workqueue()' calls Namjae Jeon
2023-12-18 17:56   ` Christophe JAILLET
2023-12-18 20:31     ` Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 004/154] ksmbd: remove md4 leftovers Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 005/154] ksmbd: remove smb2_buf_length in smb2_hdr Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 006/154] ksmbd: remove smb2_buf_length in smb2_transform_hdr Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 007/154] ksmbd: change LeaseKey data type to u8 array Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 008/154] ksmbd: use oid registry functions to decode OIDs Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 009/154] ksmbd: Remove unused parameter from smb2_get_name() Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 010/154] ksmbd: Remove unused fields from ksmbd_file struct definition Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 011/154] ksmbd: set both ipv4 and ipv6 in FSCTL_QUERY_NETWORK_INTERFACE_INFO Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 012/154] ksmbd: Fix buffer_check_err() kernel-doc comment Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 013/154] ksmbd: Fix smb2_set_info_file() " Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 014/154] ksmbd: Delete an invalid argument description in smb2_populate_readdir_entry() Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 015/154] ksmbd: Fix smb2_get_name() kernel-doc comment Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 016/154] ksmbd: register ksmbd ib client with ib_register_client() Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 017/154] ksmbd: set 445 port to smbdirect port by default Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 018/154] ksmbd: smbd: call rdma_accept() under CM handler Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 019/154] ksmbd: smbd: create MR pool Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 020/154] ksmbd: smbd: change the default maximum read/write, receive size Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 021/154] ksmbd: add smb-direct shutdown Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 022/154] ksmbd: smbd: fix missing client's memory region invalidation Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 023/154] ksmbd: smbd: validate buffer descriptor structures Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 024/154] ksmbd: add support for key exchange Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 025/154] ksmbd: use netif_is_bridge_port Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 026/154] ksmbd: store fids as opaque u64 integers Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 027/154] ksmbd: shorten experimental warning on loading the module Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 028/154] ksmbd: Remove a redundant zeroing of memory Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 029/154] ksmbd: replace usage of found with dedicated list iterator variable Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 030/154] smb3: fix ksmbd bigendian bug in oplock break, and move its struct to smbfs_common Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 031/154] ksmbd: remove filename in ksmbd_file Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 032/154] ksmbd: validate length in smb2_write() Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 033/154] ksmbd: smbd: change prototypes of RDMA read/write related functions Namjae Jeon
2023-12-18 15:32 ` Namjae Jeon [this message]
2023-12-18 15:32 ` [PATCH 5.15.y 035/154] ksmbd: smbd: simplify tracking pending packets Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 036/154] ksmbd: smbd: change the return value of get_sg_list Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 037/154] ksmbd: smbd: handle multiple Buffer descriptors Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 038/154] ksmbd: fix wrong smbd max read/write size check Namjae Jeon
2023-12-18 15:32 ` [PATCH 5.15.y 039/154] ksmbd: Fix some kernel-doc comments Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 040/154] ksmbd: smbd: fix connection dropped issue Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 041/154] ksmbd: smbd: relax the count of sges required Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 042/154] ksmbd: smbd: Remove useless license text when SPDX-License-Identifier is already used Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 043/154] ksmbd: remove duplicate flag set in smb2_write Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 044/154] ksmbd: remove unused ksmbd_share_configs_cleanup function Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 045/154] ksmbd: use wait_event instead of schedule_timeout() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 046/154] ksmbd: request update to stale share config Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 047/154] ksmbd: remove unnecessary generic_fillattr in smb2_open Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 048/154] ksmbd: don't open-code file_path() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 049/154] ksmbd: don't open-code %pD Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 050/154] ksmbd: constify struct path Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 051/154] ksmbd: remove generic_fillattr use in smb2_open() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 052/154] ksmbd: casefold utf-8 share names and fix ascii lowercase conversion Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 053/154] ksmbd: change security id to the one samba used for posix extension Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 054/154] ksmbd: set file permission mode to match Samba server posix extension behavior Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 055/154] ksmbd: fill sids in SMB_FIND_FILE_POSIX_INFO response Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 056/154] ksmbd: fix encryption failure issue for session logoff response Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 057/154] ksmbd: set NTLMSSP_NEGOTIATE_SEAL flag to challenge blob Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 058/154] ksmbd: decrease the number of SMB3 smbdirect server SGEs Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 059/154] ksmbd: reduce server smbdirect max send/receive segment sizes Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 060/154] ksmbd: hide socket error message when ipv6 config is disable Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 061/154] ksmbd: make utf-8 file name comparison work in __caseless_lookup() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 062/154] ksmbd: call ib_drain_qp when disconnected Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 063/154] ksmbd: validate share name from share config response Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 064/154] ksmbd: replace one-element arrays with flexible-array members Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 065/154] ksmbd: set SMB2_SESSION_FLAG_ENCRYPT_DATA when enforcing data encryption for this share Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 066/154] ksmbd: use F_SETLK when unlocking a file Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 067/154] ksmbd: Fix resource leak in smb2_lock() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 068/154] ksmbd: Convert to use sysfs_emit()/sysfs_emit_at() APIs Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 069/154] ksmbd: send proper error response in smb2_tree_connect() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 070/154] ksmbd: Implements sess->ksmbd_chann_list as xarray Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 071/154] ksmbd: Implements sess->rpc_handle_list " Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 072/154] ksmbd: fix typo, syncronous->synchronous Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 073/154] ksmbd: Remove duplicated codes Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 074/154] ksmbd: update Kconfig to note Kerberos support and fix indentation Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 075/154] ksmbd: Fix spelling mistake "excceed" -> "exceeded" Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 076/154] ksmbd: Fix parameter name and comment mismatch Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 077/154] ksmbd: fix possible memory leak in smb2_lock() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 078/154] ksmbd: fix wrong signingkey creation when encryption is AES256 Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 079/154] ksmbd: remove unused is_char_allowed function Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 080/154] ksmbd: delete asynchronous work from list Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 081/154] ksmbd: fix slab-out-of-bounds in init_smb2_rsp_hdr Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 082/154] ksmbd: avoid out of bounds access in decode_preauth_ctxt() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 083/154] ksmbd: set NegotiateContextCount once instead of every inc Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 084/154] ksmbd: avoid duplicate negotiate ctx offset increments Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 085/154] ksmbd: remove unused compression negotiate ctx packing Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 086/154] fs: introduce lock_rename_child() helper Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 087/154] ksmbd: fix racy issue from using ->d_parent and ->d_name Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 088/154] ksmbd: fix racy issue from session setup and logoff Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 089/154] ksmbd: destroy expired sessions Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 090/154] ksmbd: block asynchronous requests when making a delay on session setup Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 091/154] ksmbd: fix racy issue from smb2 close and logoff with multichannel Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 092/154] ksmbd: fix racy issue under cocurrent smb2 tree disconnect Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 093/154] ksmbd: fix uninitialized pointer read in ksmbd_vfs_rename() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 094/154] ksmbd: fix uninitialized pointer read in smb2_create_link() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 095/154] ksmbd: fix multiple out-of-bounds read during context decoding Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 096/154] ksmbd: fix UAF issue from opinfo->conn Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 097/154] ksmbd: call putname after using the last component Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 098/154] ksmbd: fix out-of-bound read in deassemble_neg_contexts() Namjae Jeon
2023-12-18 15:33 ` [PATCH 5.15.y 099/154] ksmbd: fix out-of-bound read in parse_lease_state() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 100/154] ksmbd: fix posix_acls and acls dereferencing possible ERR_PTR() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 101/154] ksmbd: check the validation of pdu_size in ksmbd_conn_handler_loop Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 102/154] ksmbd: validate smb request protocol id Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 103/154] ksmbd: add mnt_want_write to ksmbd vfs functions Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 104/154] ksmbd: remove unused ksmbd_tree_conn_share function Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 105/154] ksmbd: use kzalloc() instead of __GFP_ZERO Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 106/154] ksmbd: return a literal instead of 'err' in ksmbd_vfs_kern_path_locked() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 107/154] ksmbd: Change the return value of ksmbd_vfs_query_maximal_access to void Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 108/154] ksmbd: use kvzalloc instead of kvmalloc Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 109/154] ksmbd: Replace the ternary conditional operator with min() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 110/154] ksmbd: fix out of bounds read in smb2_sess_setup Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 111/154] ksmbd: add missing compound request handing in some commands Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 112/154] ksmbd: Use struct_size() helper in ksmbd_negotiate_smb_dialect() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 113/154] ksmbd: Replace one-element array with flexible-array member Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 114/154] ksmbd: Fix unsigned expression compared with zero Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 115/154] ksmbd: check if a mount point is crossed during path lookup Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 116/154] ksmbd: validate session id and tree id in compound request Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 117/154] ksmbd: fix out of bounds in init_smb2_rsp_hdr() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 118/154] ksmbd: switch to use kmemdup_nul() helper Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 119/154] ksmbd: add support for read compound Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 120/154] ksmbd: fix wrong interim response on compound Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 121/154] ksmbd: fix `force create mode' and `force directory mode' Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 122/154] ksmbd: reduce descriptor size if remaining bytes is less than request size Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 123/154] ksmbd: Fix one kernel-doc comment Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 124/154] ksmbd: fix slub overflow in ksmbd_decode_ntlmssp_auth_blob() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 125/154] ksmbd: add missing calling smb2_set_err_rsp() on error Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 126/154] ksmbd: remove experimental warning Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 127/154] ksmbd: remove unneeded mark_inode_dirty in set_info_sec() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 128/154] ksmbd: fix passing freed memory 'aux_payload_buf' Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 129/154] ksmbd: return invalid parameter error response if smb2 request is invalid Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 130/154] ksmbd: check iov vector index in ksmbd_conn_write() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 131/154] ksmbd: fix race condition between session lookup and expire Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 132/154] ksmbd: fix race condition with fp Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 133/154] ksmbd: fix race condition from parallel smb2 logoff requests Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 134/154] ksmbd: fix race condition from parallel smb2 lock requests Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 135/154] ksmbd: fix race condition between tree conn lookup and disconnect Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 136/154] ksmbd: fix wrong error response status by using set_smb2_rsp_status() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 137/154] ksmbd: fix Null pointer dereferences in ksmbd_update_fstate() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 138/154] ksmbd: fix potential double free on smb2_read_pipe() error path Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 139/154] ksmbd: Remove unused field in ksmbd_user struct Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 140/154] ksmbd: reorganize ksmbd_iov_pin_rsp() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 141/154] ksmbd: fix kernel-doc comment of ksmbd_vfs_setxattr() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 142/154] ksmbd: fix recursive locking in vfs helpers Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 143/154] ksmbd: fix missing RDMA-capable flag for IPoIB device in ksmbd_rdma_capable_netdev() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 144/154] ksmbd: add support for surrogate pair conversion Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 145/154] ksmbd: no need to wait for binded connection termination at logoff Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 146/154] ksmbd: fix kernel-doc comment of ksmbd_vfs_kern_path_locked() Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 147/154] ksmbd: handle malformed smb1 message Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 148/154] ksmbd: prevent memory leak on error return Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 149/154] ksmbd: fix possible deadlock in smb2_open Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 150/154] ksmbd: separately allocate ci per dentry Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 151/154] ksmbd: move oplock handling after unlock parent dir Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 152/154] ksmbd: release interim response after sending status pending response Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 153/154] ksmbd: move setting SMB2_FLAGS_ASYNC_COMMAND and AsyncId Namjae Jeon
2023-12-18 15:34 ` [PATCH 5.15.y 154/154] ksmbd: don't update ->op_state as OPLOCK_STATE_NONE on error Namjae Jeon
2023-12-20 14:41 ` [PATCH 5.15.y 000/154] ksmbd backport patches for 5.15.y Greg KH

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=20231218153454.8090-35-linkinjeon@kernel.org \
    --to=linkinjeon@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hyc.lee@gmail.com \
    --cc=smfrench@gmail.com \
    --cc=stable@vger.kernel.org \
    --cc=stfrench@microsoft.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