• Paulo Alcantara's avatar
    smb: client: fix shared DFS root mounts with different prefixes · 3ae872de
    Paulo Alcantara authored
    When having two DFS root mounts that are connected to same namespace,
    same mount options but different prefix paths, we can't really use the
    shared @server->origin_fullpath when chasing DFS links in them.
    
    Move the origin_fullpath field to cifs_tcon structure so when having
    shared DFS root mounts with different prefix paths, and we need to
    chase any DFS links, dfs_get_automount_devname() will pick up the
    correct full path out of the @tcon that will be used for the new
    mount.
    
    Before patch
    
      mount.cifs //dom/dfs/dir /mnt/1 -o ...
      mount.cifs //dom/dfs /mnt/2 -o ...
      # shared server, ses, tcon
      # server: origin_fullpath=//dom/dfs/dir
    
      # @server->origin_fullpath + '/dir/link1'
      $ ls /mnt/2/dir/link1
      ls: cannot open directory '/mnt/2/dir/link1': No such file or directory
    
    After patch
    
      mount.cifs //dom/dfs/dir /mnt/1 -o ...
      mount.cifs //dom/dfs /mnt/2 -o ...
      # shared server & ses
      # tcon_1: origin_fullpath=//dom/dfs/dir
      # tcon_2: origin_fullpath=//dom/dfs
    
      # @tcon_2->origin_fullpath + '/dir/link1'
      $ ls /mnt/2/dir/link1
      dir0  dir1  dir10  dir3  dir5  dir6  dir7  dir9  target2_file.txt  tsub
    
    Fixes: 8e355415 ("cifs: fix sharing of DFS connections")
    Signed-off-by: default avatarPaulo Alcantara (SUSE) <pc@manguebit.com>
    Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
    3ae872de
cifsglob.h 73.4 KB