smb3: if server does not support posix do not allow posix mount option
authorSteve French <stfrench@microsoft.com>
Mon, 18 Jun 2018 19:01:59 +0000 (14:01 -0500)
committerSteve French <stfrench@microsoft.com>
Tue, 7 Aug 2018 19:15:41 +0000 (14:15 -0500)
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>
fs/cifs/connect.c

index 5df2c06..9d02563 100644 (file)
@@ -3031,11 +3031,15 @@ cifs_get_tcon(struct cifs_ses *ses, struct smb_vol *volume_info)
        }
 
 #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 */