mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-20 03:24:03 +08:00
cifs: do not share tcp servers with dfs mounts
It isn't enough to have unshared tcons because multiple DFS mounts can connect to same target server and failover to different servers, so we can't use a single tcp server for such cases. For the simplest solution, use nosharesock option to achieve that. Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz> Reviewed-by: Aurelien Aptel <aaptel@suse.com> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
c950fc7af9
commit
f3c852b0b0
@ -1944,10 +1944,7 @@ cifs_find_tcon(struct cifs_ses *ses, struct smb3_fs_context *ctx)
|
||||
spin_lock(&cifs_tcp_ses_lock);
|
||||
list_for_each(tmp, &ses->tcon_list) {
|
||||
tcon = list_entry(tmp, struct cifs_tcon, tcon_list);
|
||||
#ifdef CONFIG_CIFS_DFS_UPCALL
|
||||
if (tcon->dfs_path)
|
||||
continue;
|
||||
#endif
|
||||
|
||||
if (!match_tcon(tcon, ctx))
|
||||
continue;
|
||||
++tcon->tc_count;
|
||||
@ -3411,6 +3408,8 @@ int cifs_mount(struct cifs_sb_info *cifs_sb, struct smb3_fs_context *ctx)
|
||||
goto error;
|
||||
}
|
||||
|
||||
ctx->nosharesock = true;
|
||||
|
||||
/* Get path of DFS root */
|
||||
ref_path = build_unc_path_to_root(ctx, cifs_sb, false);
|
||||
if (IS_ERR(ref_path)) {
|
||||
|
Loading…
Reference in New Issue
Block a user