diff options
author | Steve French <stfrench@microsoft.com> | 2018-06-15 04:56:32 +0200 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2018-06-15 09:38:08 +0200 |
commit | bea851b8babe6c87c36e97c9de0dd0bea0dd5802 (patch) | |
tree | 96f368fbb78d6b4a61e9f8174e35372ea806d240 /fs/cifs/inode.c | |
parent | cifs: Fix kernel oops when traceSMB is enabled (diff) | |
download | linux-bea851b8babe6c87c36e97c9de0dd0bea0dd5802.tar.xz linux-bea851b8babe6c87c36e97c9de0dd0bea0dd5802.zip |
smb3: Fix mode on mkdir on smb311 mounts
mkdir was not passing the mode on smb3.11 mounts with posix extensions
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/inode.c')
-rw-r--r-- | fs/cifs/inode.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index f4697f548a39..a2cfb33e85c1 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -1575,6 +1575,17 @@ int cifs_mkdir(struct inode *inode, struct dentry *direntry, umode_t mode) goto mkdir_out; } + server = tcon->ses->server; + +#ifdef CONFIG_CIFS_SMB311 + if ((server->ops->posix_mkdir) && (tcon->posix_extensions)) { + rc = server->ops->posix_mkdir(xid, inode, mode, tcon, full_path, + cifs_sb); + d_drop(direntry); /* for time being always refresh inode info */ + goto mkdir_out; + } +#endif /* SMB311 */ + if (cap_unix(tcon->ses) && (CIFS_UNIX_POSIX_PATH_OPS_CAP & le64_to_cpu(tcon->fsUnixInfo.Capability))) { rc = cifs_posix_mkdir(inode, direntry, mode, full_path, cifs_sb, @@ -1583,8 +1594,6 @@ int cifs_mkdir(struct inode *inode, struct dentry *direntry, umode_t mode) goto mkdir_out; } - server = tcon->ses->server; - if (!server->ops->mkdir) { rc = -ENOSYS; goto mkdir_out; |