| From foo@baz Tue Sep 11 12:05:55 CEST 2018 |
| From: Steve French <stfrench@microsoft.com> |
| Date: Mon, 18 Jun 2018 14:01:59 -0500 |
| Subject: smb3: if server does not support posix do not allow posix mount option |
| |
| From: Steve French <stfrench@microsoft.com> |
| |
| [ Upstream commit 8505c8bfd85a260c9dc5c47e15bd8c5357fcbcd2 ] |
| |
| If user specifies "posix" on an SMB3.11 mount, then fail the mount |
| if server does not return the POSIX negotiate context indicating |
| support for posix. |
| |
| Signed-off-by: Steve French <stfrench@microsoft.com> |
| Reviewed-by: Aurelien Aptel <aaptel@suse.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| fs/cifs/connect.c | 8 ++++++-- |
| 1 file changed, 6 insertions(+), 2 deletions(-) |
| |
| --- a/fs/cifs/connect.c |
| +++ b/fs/cifs/connect.c |
| @@ -3031,11 +3031,15 @@ cifs_get_tcon(struct cifs_ses *ses, stru |
| } |
| |
| #ifdef CONFIG_CIFS_SMB311 |
| - if ((volume_info->linux_ext) && (ses->server->posix_ext_supported)) { |
| - if (ses->server->vals->protocol_id == SMB311_PROT_ID) { |
| + if (volume_info->linux_ext) { |
| + if (ses->server->posix_ext_supported) { |
| tcon->posix_extensions = true; |
| printk_once(KERN_WARNING |
| "SMB3.11 POSIX Extensions are experimental\n"); |
| + } else { |
| + cifs_dbg(VFS, "Server does not support mounting with posix SMB3.11 extensions.\n"); |
| + rc = -EOPNOTSUPP; |
| + goto out_fail; |
| } |
| } |
| #endif /* 311 */ |