+++ /dev/null
-From a673f9695413a4ee877ef4500501e432670259a2 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 21 Apr 2026 16:26:12 +0300
-Subject: cifs: Fix connections leak when tlink setup failed
-
-From: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
-
-commit 1dcdf5f5b2137185cbdd5385f29949ab3da4f00c upstream.
-
-If the tlink setup failed, lost to put the connections, then
-the module refcnt leak since the cifsd kthread not exit.
-
-Also leak the fscache info, and for next mount with fsc, it will
-print the follow errors:
- CIFS: Cache volume key already in use (cifs,127.0.0.1:445,TEST)
-
-Let's check the result of tlink setup, and do some cleanup.
-
-Fixes: 56c762eb9bee ("cifs: Refactor out cifs_mount()")
-Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
-Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
-Signed-off-by: Steve French <stfrench@microsoft.com>
-[ kovalev: bp to fix CVE-2022-49822; adapted to use direct xid/ses/tcon
- variables instead of mnt_ctx struct fields due to the older kernel not
- having the corresponding cifs_mount() refactoring (see upstream commit
- c88f7dcd6d64) ]
-Signed-off-by: Vasiliy Kovalev <kovalev@altlinux.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- fs/cifs/connect.c | 15 +++++++++++----
- 1 file changed, 11 insertions(+), 4 deletions(-)
-
-diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
-index 769c7759601db..3161155fd069b 100644
---- a/fs/cifs/connect.c
-+++ b/fs/cifs/connect.c
-@@ -4786,9 +4786,13 @@ int cifs_mount(struct cifs_sb_info *cifs_sb, struct smb_vol *vol)
- vol->prepath = NULL;
-
- out:
-- free_xid(xid);
- cifs_try_adding_channels(ses);
-- return mount_setup_tlink(cifs_sb, ses, tcon);
-+ rc = mount_setup_tlink(cifs_sb, ses, tcon);
-+ if (rc)
-+ goto error;
-+
-+ free_xid(xid);
-+ return rc;
-
- error:
- kfree(ref_path);
-@@ -4820,9 +4824,12 @@ int cifs_mount(struct cifs_sb_info *cifs_sb, struct smb_vol *vol)
- goto error;
- }
-
-- free_xid(xid);
-+ rc = mount_setup_tlink(cifs_sb, ses, tcon);
-+ if (rc)
-+ goto error;
-
-- return mount_setup_tlink(cifs_sb, ses, tcon);
-+ free_xid(xid);
-+ return rc;
-
- error:
- mount_put_conns(cifs_sb, xid, server, ses, tcon);
---
-2.53.0
-