fix encryption error checks on mount
authorSteve French <smfrench@gmail.com>
Tue, 22 Sep 2015 08:16:27 +0000 (03:16 -0500)
committerSteve French <smfrench@gmail.com>
Thu, 24 Sep 2015 05:53:31 +0000 (00:53 -0500)
Signed-off-by: Steve French <steve.french@primarydata.com>
fs/cifs/smb2pdu.c

index e543431db916d8b14b4d9f1cb2f47f328fb7c26e..ce83e2edbe0a22ae9858ec5a04caa4e2b6ad59d2 100644 (file)
@@ -922,6 +922,12 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
        if (tcon && tcon->bad_network_name)
                return -ENOENT;
 
+       if ((tcon->seal) &&
+           ((ses->server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION) == 0)) {
+               cifs_dbg(VFS, "encryption requested but no server support");
+               return -EOPNOTSUPP;
+       }
+
        unc_path = kmalloc(MAX_SHARENAME_LENGTH * 2, GFP_KERNEL);
        if (unc_path == NULL)
                return -ENOMEM;
@@ -1001,6 +1007,8 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
            ((tcon->share_flags & SHI1005_FLAGS_DFS) == 0))
                cifs_dbg(VFS, "DFS capability contradicts DFS flag\n");
        init_copy_chunk_defaults(tcon);
+       if (tcon->share_flags & SHI1005_FLAGS_ENCRYPT_DATA)
+               cifs_dbg(VFS, "Encrypted shares not supported");
        if (tcon->ses->server->ops->validate_negotiate)
                rc = tcon->ses->server->ops->validate_negotiate(xid, tcon);
 tcon_exit: