Re: [PATCH] smb: client: fix dfs link mount against w2k8

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tentatively merged into cifs-2.6.git for-next pending testing

On Wed, Aug 2, 2023 at 11:43 AM Paulo Alcantara <pc@xxxxxxxxxxxxx> wrote:
>
> Customer reported that they couldn't mount their DFS link that was
> seen by the client as a DFS interlink -- special form of DFS link
> where its single target may point to a different DFS namespace -- and
> it turned out that it was just a regular DFS link where its referral
> header flags missed the StorageServers bit thus making the client
> think it couldn't tree connect to target directly without requiring
> further referrals.
>
> When the DFS link referral header flags misses the StoraServers bit
> and its target doesn't respond to any referrals, then tree connect to
> it.
>
> Fixes: a1c0d00572fc ("cifs: share dfs connections and supers")
> Signed-off-by: Paulo Alcantara (SUSE) <pc@xxxxxxxxxxxxx>
> ---
>  fs/smb/client/dfs.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/fs/smb/client/dfs.c b/fs/smb/client/dfs.c
> index df3fd3b720da..ee772c3d9f00 100644
> --- a/fs/smb/client/dfs.c
> +++ b/fs/smb/client/dfs.c
> @@ -177,8 +177,12 @@ static int __dfs_mount_share(struct cifs_mount_ctx *mnt_ctx)
>                 struct dfs_cache_tgt_list tl = DFS_CACHE_TGT_LIST_INIT(tl);
>
>                 rc = dfs_get_referral(mnt_ctx, ref_path + 1, NULL, &tl);
> -               if (rc)
> +               if (rc) {
> +                       rc = cifs_mount_get_tcon(mnt_ctx);
> +                       if (!rc)
> +                               rc = cifs_is_path_remote(mnt_ctx);
>                         break;
> +               }
>
>                 tit = dfs_cache_get_tgt_iterator(&tl);
>                 if (!tit) {
> --
> 2.41.0
>


-- 
Thanks,

Steve




[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux