umode_t dir_mode;
        enum securityEnum sectype; /* sectype requested via mnt opts */
        bool sign; /* was signing requested via mnt opts? */
+       bool ignore_signature:1;
        bool retry:1;
        bool intr:1;
        bool setuids:1;
        char server_GUID[16];
        __u16 sec_mode;
        bool sign; /* is signing enabled on this connection? */
+       bool ignore_signature:1; /* skip validation of signatures in SMB2/3 rsp */
        bool session_estab; /* mark when very first sess is established */
        int echo_credits;  /* echo reserved slots */
        int oplock_credits;  /* oplock break reserved slots */
 
        Opt_serverino, Opt_noserverino,
        Opt_rwpidforward, Opt_cifsacl, Opt_nocifsacl,
        Opt_acl, Opt_noacl, Opt_locallease,
-       Opt_sign, Opt_seal, Opt_noac,
+       Opt_sign, Opt_ignore_signature, Opt_seal, Opt_noac,
        Opt_fsc, Opt_mfsymlinks,
        Opt_multiuser, Opt_sloppy, Opt_nosharesock,
        Opt_persistent, Opt_nopersistent,
        { Opt_noacl, "noacl" },
        { Opt_locallease, "locallease" },
        { Opt_sign, "sign" },
+       { Opt_ignore_signature, "signloosely" },
        { Opt_seal, "seal" },
        { Opt_noac, "noac" },
        { Opt_fsc, "fsc" },
                case Opt_sign:
                        vol->sign = true;
                        break;
+               case Opt_ignore_signature:
+                       vol->sign = true;
+                       vol->ignore_signature = true;
+                       break;
                case Opt_seal:
                        /* we do not do the following in secFlags because seal
                         * is a per tree connection (mount) not a per socket
        if (server->rdma != vol->rdma)
                return 0;
 
+       if (server->ignore_signature != vol->ignore_signature)
+               return 0;
+
        return 1;
 }
 
        tcp_ses->tcpStatus = CifsNeedNegotiate;
 
        tcp_ses->nr_targets = 1;
-
+       tcp_ses->ignore_signature = volume_info->ignore_signature;
        /* thread spawned, put it on the list */
        spin_lock(&cifs_tcp_ses_lock);
        list_add(&tcp_ses->tcp_ses_list, &cifs_tcp_ses_list);
 
        ses->sectype = volume_info->sectype;
        ses->sign = volume_info->sign;
-
        mutex_lock(&ses->session_mutex);
        rc = cifs_negotiate_protocol(xid, ses);
        if (!rc)