diff options
author | Eugene Korenevsky <ekorenevsky@astralinux.ru> | 2022-01-14 20:53:40 +0100 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2022-01-17 20:28:25 +0100 |
commit | a2809d0e16963fdf3984409e47f145cccb0c6821 (patch) | |
tree | 3b92a5ea5b9971e50de2e7afb0de73d04cdf5120 /fs/cifs/inode.c | |
parent | cifs: alloc_path_with_tree_prefix: do not append sep. if the path is empty (diff) | |
download | linux-a2809d0e16963fdf3984409e47f145cccb0c6821.tar.xz linux-a2809d0e16963fdf3984409e47f145cccb0c6821.zip |
cifs: quirk for STATUS_OBJECT_NAME_INVALID returned for non-ASCII dfs refs
Windows SMB server responds with STATUS_OBJECT_NAME_INVALID code to
SMB2 QUERY_INFO request for "\<server>\<dfsname>\<linkpath>" DFS reference,
where <dfsname> contains non-ASCII unicode symbols.
Check such DFS reference and emulate -EREMOTE if it is actual.
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215440
Signed-off-by: Eugene Korenevsky <ekorenevsky@astralinux.ru>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/inode.c')
-rw-r--r-- | fs/cifs/inode.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index 279622e4eb1c..baa197edd8c5 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -952,6 +952,12 @@ cifs_get_inode_info(struct inode **inode, rc = server->ops->query_path_info(xid, tcon, cifs_sb, full_path, tmp_data, &adjust_tz, &is_reparse_point); +#ifdef CONFIG_CIFS_DFS_UPCALL + if (rc == -ENOENT && is_tcon_dfs(tcon)) + rc = cifs_dfs_query_info_nonascii_quirk(xid, tcon, + cifs_sb, + full_path); +#endif data = tmp_data; } |