mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 07:04:24 +00:00
cifs: Fix connections leak when tlink setup failed
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: 56c762eb9b
("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>
This commit is contained in:
parent
f0c4d9fc9c
commit
1dcdf5f5b2
1 changed files with 11 additions and 3 deletions
|
@ -3855,9 +3855,13 @@ int cifs_mount(struct cifs_sb_info *cifs_sb, struct smb3_fs_context *ctx)
|
|||
uuid_copy(&cifs_sb->dfs_mount_id, &mnt_ctx.mount_id);
|
||||
|
||||
out:
|
||||
free_xid(mnt_ctx.xid);
|
||||
cifs_try_adding_channels(cifs_sb, mnt_ctx.ses);
|
||||
return mount_setup_tlink(cifs_sb, mnt_ctx.ses, mnt_ctx.tcon);
|
||||
rc = mount_setup_tlink(cifs_sb, mnt_ctx.ses, mnt_ctx.tcon);
|
||||
if (rc)
|
||||
goto error;
|
||||
|
||||
free_xid(mnt_ctx.xid);
|
||||
return rc;
|
||||
|
||||
error:
|
||||
dfs_cache_put_refsrv_sessions(&mnt_ctx.mount_id);
|
||||
|
@ -3884,8 +3888,12 @@ int cifs_mount(struct cifs_sb_info *cifs_sb, struct smb3_fs_context *ctx)
|
|||
goto error;
|
||||
}
|
||||
|
||||
rc = mount_setup_tlink(cifs_sb, mnt_ctx.ses, mnt_ctx.tcon);
|
||||
if (rc)
|
||||
goto error;
|
||||
|
||||
free_xid(mnt_ctx.xid);
|
||||
return mount_setup_tlink(cifs_sb, mnt_ctx.ses, mnt_ctx.tcon);
|
||||
return rc;
|
||||
|
||||
error:
|
||||
mount_put_conns(&mnt_ctx);
|
||||
|
|
Loading…
Reference in a new issue