diff options
author | Ronnie Sahlberg <lsahlber@redhat.com> | 2019-04-10 00:44:46 +0200 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2019-05-08 06:24:55 +0200 |
commit | ebaf546a5584d0a75aa61e4872771008715b8639 (patch) | |
tree | 0e1022850fcf58f881406f1cfa3de3be522d6fdd /fs/cifs/smb1ops.c | |
parent | cifs: fix strcat buffer overflow and reduce raciness in smb21_set_oplock_level() (diff) | |
download | linux-ebaf546a5584d0a75aa61e4872771008715b8639.tar.xz linux-ebaf546a5584d0a75aa61e4872771008715b8639.zip |
SMB3: Clean up query symlink when reparse point
Two of the common symlink formats use reparse points
(unlike mfsymlinks and also unlike the SMB1 posix
extensions). This is the first part of the fixes
to allow these reparse points (NFS style and Windows
symlinks) to be resolved properly as symlinks by the
client.
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/smb1ops.c')
-rw-r--r-- | fs/cifs/smb1ops.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c index c711f1f39bf2..c4e75afa3258 100644 --- a/fs/cifs/smb1ops.c +++ b/fs/cifs/smb1ops.c @@ -950,8 +950,8 @@ cifs_unix_dfs_readlink(const unsigned int xid, struct cifs_tcon *tcon, static int cifs_query_symlink(const unsigned int xid, struct cifs_tcon *tcon, - const char *full_path, char **target_path, - struct cifs_sb_info *cifs_sb) + struct cifs_sb_info *cifs_sb, const char *full_path, + char **target_path, bool is_reparse_point) { int rc; int oplock = 0; @@ -960,6 +960,11 @@ cifs_query_symlink(const unsigned int xid, struct cifs_tcon *tcon, cifs_dbg(FYI, "%s: path: %s\n", __func__, full_path); + if (is_reparse_point) { + cifs_dbg(VFS, "reparse points not handled for SMB1 symlinks\n"); + return -EOPNOTSUPP; + } + /* Check for unix extensions */ if (cap_unix(tcon->ses)) { rc = CIFSSMBUnixQuerySymLink(xid, tcon, full_path, target_path, |