cifs: avoid dup prefix path in dfs_get_automount_devname()
authorPaulo Alcantara <pc@manguebit.com>
Sun, 16 Apr 2023 18:38:28 +0000 (15:38 -0300)
committerSteve French <stfrench@microsoft.com>
Thu, 1 Jun 2023 04:26:42 +0000 (23:26 -0500)
commit7aebb699f73b1ed24e99027d112d39d48d1c1738
treea17d48ecf2798eb9d85a77986efed69bd62e17a2
parentb671d47eed142aa3a6bc0eb42c8d453d515ab4ce
cifs: avoid dup prefix path in dfs_get_automount_devname()

@server->origin_fullpath already contains the tree name + optional
prefix, so avoid calling __build_path_from_dentry_optional_prefix() as
it might end up duplicating prefix path from @cifs_sb->prepath into
final full path.

Instead, generate DFS full path by simply merging
@server->origin_fullpath with dentry's path.

This fixes the following case

mount.cifs //root/dfs/dir /mnt/ -o ...
ls /mnt/link

where cifs_dfs_do_automount() will call smb3_parse_devname() with
@devname set to "//root/dfs/dir/link" instead of
"//root/dfs/dir/dir/link".

Fixes: 7ad54b98fc1f ("cifs: use origin fullpath for automounts")
Cc: <stable@vger.kernel.org> # 6.2+
Signed-off-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/cifs_dfs_ref.c
fs/cifs/dfs.h