All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] smb/server: fix some bugs
@ 2026-08-14  2:36 Ze Tan
  2026-08-14  2:36 ` [PATCH 1/3] smb/server: fix tree connection leak in smb2_tree_connect() Ze Tan
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Ze Tan @ 2026-08-14  2:36 UTC (permalink / raw)
  To: linkinjeon, sfrench, senozhatsky, constant.lee, tom, chenxiaosong,
	linux-cifs
  Cc: tanze

Ze Tan (3):
  smb/server: fix tree connection leak in smb2_tree_connect()
  smb/server: check create_proc_sessions() failure
  smb/server: check create_proc_shares() failure

 fs/smb/server/server.c  |  9 +++++++--
 fs/smb/server/smb2pdu.c | 10 +++++++++-
 2 files changed, 16 insertions(+), 3 deletions(-)


base-commit: e7317f3e411724b3e8ba813bb2c09a5c7d381327
-- 
2.43.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/3] smb/server: fix tree connection leak in smb2_tree_connect()
  2026-08-14  2:36 [PATCH 0/3] smb/server: fix some bugs Ze Tan
@ 2026-08-14  2:36 ` Ze Tan
  2026-08-14  2:36 ` [PATCH 2/3] smb/server: check create_proc_sessions() failure Ze Tan
  2026-08-14  2:36 ` [PATCH 3/3] smb/server: check create_proc_shares() failure Ze Tan
  2 siblings, 0 replies; 4+ messages in thread
From: Ze Tan @ 2026-08-14  2:36 UTC (permalink / raw)
  To: linkinjeon, sfrench, senozhatsky, constant.lee, tom, chenxiaosong,
	linux-cifs
  Cc: tanze, ChenXiaoSong

See the procedure below:

  smb2_tree_connect
    ksmbd_tree_conn_connect
      xa_store(&sess->tree_conns, tree_conn->id, tree_conn)
      ksmbd_counter_inc(KSMBD_COUNTER_TREE_CONNS)
      ksmbd_share_tree_conn_inc(sc)
    ksmbd_iov_pin_rsp // fail
    status.ret = KSMBD_TREE_CONN_STATUS_NOMEM
    // do not disconnect tree_conn

Disconnect the new tree connection if ksmbd_iov_pin_rsp() fails.

Fixes: e2b76ab8b5c9 ("ksmbd: add support for read compound")
Signed-off-by: Ze Tan <tanze@kylinos.cn>
Reviewed-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
---
 fs/smb/server/smb2pdu.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index 835d9e2aacc4..cac83b89535c 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -2691,8 +2691,16 @@ int smb2_tree_connect(struct ksmbd_work *work)
 			cpu_to_le32(SMB2_SHAREFLAG_ACCESS_BASED_DIRECTORY_ENUM);
 
 	rc = ksmbd_iov_pin_rsp(work, rsp, sizeof(struct smb2_tree_connect_rsp));
-	if (rc)
+	if (rc) {
+		if (status.ret == KSMBD_TREE_CONN_STATUS_OK) {
+			down_write(&sess->tree_conns_lock);
+			status.tree_conn->t_state = TREE_DISCONNECTED;
+			up_write(&sess->tree_conns_lock);
+			ksmbd_tree_conn_disconnect(sess, status.tree_conn);
+			status.tree_conn = NULL;
+		}
 		status.ret = KSMBD_TREE_CONN_STATUS_NOMEM;
+	}
 
 	if (!IS_ERR(treename))
 		kfree(treename);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/3] smb/server: check create_proc_sessions() failure
  2026-08-14  2:36 [PATCH 0/3] smb/server: fix some bugs Ze Tan
  2026-08-14  2:36 ` [PATCH 1/3] smb/server: fix tree connection leak in smb2_tree_connect() Ze Tan
@ 2026-08-14  2:36 ` Ze Tan
  2026-08-14  2:36 ` [PATCH 3/3] smb/server: check create_proc_shares() failure Ze Tan
  2 siblings, 0 replies; 4+ messages in thread
From: Ze Tan @ 2026-08-14  2:36 UTC (permalink / raw)
  To: linkinjeon, sfrench, senozhatsky, constant.lee, tom, chenxiaosong,
	linux-cifs
  Cc: tanze, ChenXiaoSong

create_proc_sessions() returns -ENOMEM when its procfs entry
cannot be created.

Fixes: b38f99c1217a ("ksmbd: add procfs interface for runtime monitoring and statistics")
Signed-off-by: Ze Tan <tanze@kylinos.cn>
Reviewed-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
---
 fs/smb/server/server.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/fs/smb/server/server.c b/fs/smb/server/server.c
index 0ccd123ba418..14431adce9b8 100644
--- a/fs/smb/server/server.c
+++ b/fs/smb/server/server.c
@@ -623,7 +623,10 @@ static int __init ksmbd_server_init(void)
 	ret = ksmbd_proc_init();
 	if (ret)
 		goto err_unregister;
-	create_proc_sessions();
+	ret = create_proc_sessions();
+	if (ret)
+		goto err_proc_cleanup;
+
 	create_proc_shares();
 
 	ksmbd_server_tcp_callbacks_init();
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 3/3] smb/server: check create_proc_shares() failure
  2026-08-14  2:36 [PATCH 0/3] smb/server: fix some bugs Ze Tan
  2026-08-14  2:36 ` [PATCH 1/3] smb/server: fix tree connection leak in smb2_tree_connect() Ze Tan
  2026-08-14  2:36 ` [PATCH 2/3] smb/server: check create_proc_sessions() failure Ze Tan
@ 2026-08-14  2:36 ` Ze Tan
  2 siblings, 0 replies; 4+ messages in thread
From: Ze Tan @ 2026-08-14  2:36 UTC (permalink / raw)
  To: linkinjeon, sfrench, senozhatsky, constant.lee, tom, chenxiaosong,
	linux-cifs
  Cc: tanze, ChenXiaoSong

create_proc_shares() returns -ENOMEM when its procfs entry
cannot be created.

Fixes: b02a77726ed0 ("ksmbd: add procfs monitoring for active shares")
Signed-off-by: Ze Tan <tanze@kylinos.cn>
Reviewed-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
---
 fs/smb/server/server.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/fs/smb/server/server.c b/fs/smb/server/server.c
index 14431adce9b8..3c318f529927 100644
--- a/fs/smb/server/server.c
+++ b/fs/smb/server/server.c
@@ -627,7 +627,9 @@ static int __init ksmbd_server_init(void)
 	if (ret)
 		goto err_proc_cleanup;
 
-	create_proc_shares();
+	ret = create_proc_shares();
+	if (ret)
+		goto err_proc_cleanup;
 
 	ksmbd_server_tcp_callbacks_init();
 
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-08-14  2:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-14  2:36 [PATCH 0/3] smb/server: fix some bugs Ze Tan
2026-08-14  2:36 ` [PATCH 1/3] smb/server: fix tree connection leak in smb2_tree_connect() Ze Tan
2026-08-14  2:36 ` [PATCH 2/3] smb/server: check create_proc_sessions() failure Ze Tan
2026-08-14  2:36 ` [PATCH 3/3] smb/server: check create_proc_shares() failure Ze Tan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.