From: Paulo Alcantara Date: Wed, 18 Sep 2024 05:04:23 +0000 (-0300) Subject: smb: client: fix DFS failover in multiuser mounts X-Git-Tag: v6.12-rc1~44^2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0826b134c0b039db4850fb762e79766a45d847c5;p=thirdparty%2Fkernel%2Flinux.git smb: client: fix DFS failover in multiuser mounts For sessions and tcons created on behalf of new users accessing a multiuser mount, matching their sessions in tcon_super_cb() with master tcon will always lead to false as every new user will have its own session and tcon. All multiuser sessions, however, will inherit ->dfs_root_ses from master tcon, so match it instead. Signed-off-by: Paulo Alcantara (Red Hat) Signed-off-by: Steve French --- diff --git a/fs/smb/client/misc.c b/fs/smb/client/misc.c index 47b861517bed5..054f10ebf65a5 100644 --- a/fs/smb/client/misc.c +++ b/fs/smb/client/misc.c @@ -1111,7 +1111,8 @@ static void tcon_super_cb(struct super_block *sb, void *arg) t2 = cifs_sb_master_tcon(cifs_sb); spin_lock(&t2->tc_lock); - if (t1->ses == t2->ses && + if ((t1->ses == t2->ses || + t1->ses->dfs_root_ses == t2->ses->dfs_root_ses) && t1->ses->server == t2->ses->server && t2->origin_fullpath && dfs_src_pathname_equal(t2->origin_fullpath, t1->origin_fullpath))