linux/fs/smb/client
Paulo Alcantara b9f3c6febf smb: client: fix shared DFS root mounts with different prefixes
[ Upstream commit 3ae872de41 ]

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: 8e3554150d ("cifs: fix sharing of DFS connections")
Signed-off-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2023-07-19 16:36:24 +02:00
..
asn1.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cached_dir.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cached_dir.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifs_debug.c smb: client: fix shared DFS root mounts with different prefixes 2023-07-19 16:36:24 +02:00
cifs_debug.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifs_dfs_ref.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifs_fs_sb.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifs_ioctl.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifs_spnego.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifs_spnego.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifs_spnego_negtokeninit.asn1 smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifs_swn.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifs_swn.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifs_unicode.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifs_unicode.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifs_uniupr.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifsacl.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifsacl.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifsencrypt.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifsfs.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifsfs.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifsglob.h smb: client: fix shared DFS root mounts with different prefixes 2023-07-19 16:36:24 +02:00
cifspdu.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifsproto.h smb: client: fix shared DFS root mounts with different prefixes 2023-07-19 16:36:24 +02:00
cifsroot.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
cifssmb.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
connect.c smb: client: fix shared DFS root mounts with different prefixes 2023-07-19 16:36:24 +02:00
dfs.c smb: client: fix shared DFS root mounts with different prefixes 2023-07-19 16:36:24 +02:00
dfs.h smb: client: fix shared DFS root mounts with different prefixes 2023-07-19 16:36:24 +02:00
dfs_cache.c smb: client: fix shared DFS root mounts with different prefixes 2023-07-19 16:36:24 +02:00
dfs_cache.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
dir.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
dns_resolve.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
dns_resolve.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
export.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
file.c SMB3: Do not send lease break acknowledgment if all file handles have been closed 2023-07-19 16:36:20 +02:00
fs_context.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
fs_context.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
fscache.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
fscache.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
inode.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
ioctl.c cifs: address unused variable warning 2023-05-27 03:33:23 -05:00
Kconfig smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
link.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
Makefile smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
misc.c smb: client: fix shared DFS root mounts with different prefixes 2023-07-19 16:36:24 +02:00
netlink.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
netlink.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
netmisc.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
nterr.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
nterr.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
ntlmssp.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
readdir.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
rfc1002pdu.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
sess.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smb1ops.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smb2file.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smb2glob.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smb2inode.c smb: client: fix broken file attrs with nodfs mounts 2023-07-19 16:36:24 +02:00
smb2maperror.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smb2misc.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smb2ops.c cifs: do all necessary checks for credits within or before locking 2023-07-19 16:36:24 +02:00
smb2pdu.c cifs: fix max_credits implementation 2023-06-11 20:52:49 -05:00
smb2pdu.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smb2proto.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smb2status.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smb2transport.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smbdirect.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smbdirect.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smbencrypt.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
smberr.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
trace.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
trace.h smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
transport.c cifs: do all necessary checks for credits within or before locking 2023-07-19 16:36:24 +02:00
unc.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
winucase.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
xattr.c smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00