cifs: Split the smb3_add_credits tracepoint
[linux-block.git] / fs / cifs / smb2ops.c
index 891b11576e557b090503fcce4caff1f18de89333..a67df8eaf7026186b6e9efa0413731ff3ae4d167 100644 (file)
@@ -86,6 +86,9 @@ smb2_add_credits(struct TCP_Server_Info *server,
        if (*val > 65000) {
                *val = 65000; /* Don't get near 64K credits, avoid srv bugs */
                pr_warn_once("server overflowed SMB3 credits\n");
+               trace_smb3_overflow_credits(server->CurrentMid,
+                                           server->conn_id, server->hostname, *val,
+                                           add, server->in_flight);
        }
        server->in_flight--;
        if (server->in_flight == 0 &&
@@ -251,7 +254,7 @@ smb2_wait_mtu_credits(struct TCP_Server_Info *server, unsigned int size,
        in_flight = server->in_flight;
        spin_unlock(&server->req_lock);
 
-       trace_smb3_add_credits(server->CurrentMid,
+       trace_smb3_wait_credits(server->CurrentMid,
                        server->conn_id, server->hostname, scredits, -(credits->value), in_flight);
        cifs_dbg(FYI, "%s: removed %u credits total=%d\n",
                        __func__, credits->value, scredits);
@@ -300,7 +303,7 @@ smb2_adjust_credits(struct TCP_Server_Info *server,
        spin_unlock(&server->req_lock);
        wake_up(&server->request_q);
 
-       trace_smb3_add_credits(server->CurrentMid,
+       trace_smb3_adj_credits(server->CurrentMid,
                        server->conn_id, server->hostname, scredits,
                        credits->value - new_val, in_flight);
        cifs_dbg(FYI, "%s: adjust added %u credits total=%d\n",
@@ -897,8 +900,8 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon,
        atomic_inc(&tcon->num_remote_opens);
 
        o_rsp = (struct smb2_create_rsp *)rsp_iov[0].iov_base;
-       oparms.fid->persistent_fid = le64_to_cpu(o_rsp->PersistentFileId);
-       oparms.fid->volatile_fid = le64_to_cpu(o_rsp->VolatileFileId);
+       oparms.fid->persistent_fid = o_rsp->PersistentFileId;
+       oparms.fid->volatile_fid = o_rsp->VolatileFileId;
 #ifdef CONFIG_CIFS_DEBUG2
        oparms.fid->mid = le64_to_cpu(o_rsp->hdr.MessageId);
 #endif /* CIFS_DEBUG2 */
@@ -1192,17 +1195,12 @@ smb2_query_eas(const unsigned int xid, struct cifs_tcon *tcon,
               struct cifs_sb_info *cifs_sb)
 {
        int rc;
-       __le16 *utf16_path;
        struct kvec rsp_iov = {NULL, 0};
        int buftype = CIFS_NO_BUFFER;
        struct smb2_query_info_rsp *rsp;
        struct smb2_file_full_ea_info *info = NULL;
 
-       utf16_path = cifs_convert_path_to_utf16(path, cifs_sb);
-       if (!utf16_path)
-               return -ENOMEM;
-
-       rc = smb2_query_info_compound(xid, tcon, utf16_path,
+       rc = smb2_query_info_compound(xid, tcon, path,
                                      FILE_READ_EA,
                                      FILE_FULL_EA_INFORMATION,
                                      SMB2_O_INFO_FILE,
@@ -1235,7 +1233,6 @@ smb2_query_eas(const unsigned int xid, struct cifs_tcon *tcon,
                        le32_to_cpu(rsp->OutputBufferLength), ea_name);
 
  qeas_exit:
-       kfree(utf16_path);
        free_rsp_buf(buftype, rsp_iov.iov_base);
        return rc;
 }
@@ -1295,7 +1292,7 @@ smb2_set_ea(const unsigned int xid, struct cifs_tcon *tcon,
                         * the new EA. If not we should not add it since we
                         * would not be able to even read the EAs back.
                         */
-                       rc = smb2_query_info_compound(xid, tcon, utf16_path,
+                       rc = smb2_query_info_compound(xid, tcon, path,
                                      FILE_READ_EA,
                                      FILE_FULL_EA_INFORMATION,
                                      SMB2_O_INFO_FILE,
@@ -1643,6 +1640,7 @@ smb2_ioctl_query_info(const unsigned int xid,
        unsigned int size[2];
        void *data[2];
        int create_options = is_dir ? CREATE_NOT_FILE : CREATE_NOT_DIR;
+       void (*free_req1_func)(struct smb_rqst *r);
 
        vars = kzalloc(sizeof(*vars), GFP_ATOMIC);
        if (vars == NULL)
@@ -1652,27 +1650,29 @@ smb2_ioctl_query_info(const unsigned int xid,
 
        resp_buftype[0] = resp_buftype[1] = resp_buftype[2] = CIFS_NO_BUFFER;
 
-       if (copy_from_user(&qi, arg, sizeof(struct smb_query_info)))
-               goto e_fault;
-
+       if (copy_from_user(&qi, arg, sizeof(struct smb_query_info))) {
+               rc = -EFAULT;
+               goto free_vars;
+       }
        if (qi.output_buffer_length > 1024) {
-               kfree(vars);
-               return -EINVAL;
+               rc = -EINVAL;
+               goto free_vars;
        }
 
        if (!ses || !server) {
-               kfree(vars);
-               return -EIO;
+               rc = -EIO;
+               goto free_vars;
        }
 
        if (smb3_encryption_required(tcon))
                flags |= CIFS_TRANSFORM_REQ;
 
-       buffer = memdup_user(arg + sizeof(struct smb_query_info),
-                            qi.output_buffer_length);
-       if (IS_ERR(buffer)) {
-               kfree(vars);
-               return PTR_ERR(buffer);
+       if (qi.output_buffer_length) {
+               buffer = memdup_user(arg + sizeof(struct smb_query_info), qi.output_buffer_length);
+               if (IS_ERR(buffer)) {
+                       rc = PTR_ERR(buffer);
+                       goto free_vars;
+               }
        }
 
        /* Open */
@@ -1710,45 +1710,45 @@ smb2_ioctl_query_info(const unsigned int xid,
        rc = SMB2_open_init(tcon, server,
                            &rqst[0], &oplock, &oparms, path);
        if (rc)
-               goto iqinf_exit;
+               goto free_output_buffer;
        smb2_set_next_command(tcon, &rqst[0]);
 
        /* Query */
        if (qi.flags & PASSTHRU_FSCTL) {
                /* Can eventually relax perm check since server enforces too */
-               if (!capable(CAP_SYS_ADMIN))
+               if (!capable(CAP_SYS_ADMIN)) {
                        rc = -EPERM;
-               else  {
-                       rqst[1].rq_iov = &vars->io_iov[0];
-                       rqst[1].rq_nvec = SMB2_IOCTL_IOV_SIZE;
-
-                       rc = SMB2_ioctl_init(tcon, server,
-                                            &rqst[1],
-                                            COMPOUND_FID, COMPOUND_FID,
-                                            qi.info_type, true, buffer,
-                                            qi.output_buffer_length,
-                                            CIFSMaxBufSize -
-                                            MAX_SMB2_CREATE_RESPONSE_SIZE -
-                                            MAX_SMB2_CLOSE_RESPONSE_SIZE);
+                       goto free_open_req;
                }
+               rqst[1].rq_iov = &vars->io_iov[0];
+               rqst[1].rq_nvec = SMB2_IOCTL_IOV_SIZE;
+
+               rc = SMB2_ioctl_init(tcon, server, &rqst[1], COMPOUND_FID, COMPOUND_FID,
+                                    qi.info_type, true, buffer, qi.output_buffer_length,
+                                    CIFSMaxBufSize - MAX_SMB2_CREATE_RESPONSE_SIZE -
+                                    MAX_SMB2_CLOSE_RESPONSE_SIZE);
+               free_req1_func = SMB2_ioctl_free;
        } else if (qi.flags == PASSTHRU_SET_INFO) {
                /* Can eventually relax perm check since server enforces too */
-               if (!capable(CAP_SYS_ADMIN))
+               if (!capable(CAP_SYS_ADMIN)) {
                        rc = -EPERM;
-               else  {
-                       rqst[1].rq_iov = &vars->si_iov[0];
-                       rqst[1].rq_nvec = 1;
-
-                       size[0] = 8;
-                       data[0] = buffer;
-
-                       rc = SMB2_set_info_init(tcon, server,
-                                       &rqst[1],
-                                       COMPOUND_FID, COMPOUND_FID,
-                                       current->tgid,
-                                       FILE_END_OF_FILE_INFORMATION,
-                                       SMB2_O_INFO_FILE, 0, data, size);
+                       goto free_open_req;
                }
+               if (qi.output_buffer_length < 8) {
+                       rc = -EINVAL;
+                       goto free_open_req;
+               }
+               rqst[1].rq_iov = &vars->si_iov[0];
+               rqst[1].rq_nvec = 1;
+
+               /* MS-FSCC 2.4.13 FileEndOfFileInformation */
+               size[0] = 8;
+               data[0] = buffer;
+
+               rc = SMB2_set_info_init(tcon, server, &rqst[1], COMPOUND_FID, COMPOUND_FID,
+                                       current->tgid, FILE_END_OF_FILE_INFORMATION,
+                                       SMB2_O_INFO_FILE, 0, data, size);
+               free_req1_func = SMB2_set_info_free;
        } else if (qi.flags == PASSTHRU_QUERY_INFO) {
                rqst[1].rq_iov = &vars->qi_iov[0];
                rqst[1].rq_nvec = 1;
@@ -1759,6 +1759,7 @@ smb2_ioctl_query_info(const unsigned int xid,
                                  qi.info_type, qi.additional_information,
                                  qi.input_buffer_length,
                                  qi.output_buffer_length, buffer);
+               free_req1_func = SMB2_query_info_free;
        } else { /* unknown flags */
                cifs_tcon_dbg(VFS, "Invalid passthru query flags: 0x%x\n",
                              qi.flags);
@@ -1766,7 +1767,7 @@ smb2_ioctl_query_info(const unsigned int xid,
        }
 
        if (rc)
-               goto iqinf_exit;
+               goto free_open_req;
        smb2_set_next_command(tcon, &rqst[1]);
        smb2_set_related(&rqst[1]);
 
@@ -1777,14 +1778,14 @@ smb2_ioctl_query_info(const unsigned int xid,
        rc = SMB2_close_init(tcon, server,
                             &rqst[2], COMPOUND_FID, COMPOUND_FID, false);
        if (rc)
-               goto iqinf_exit;
+               goto free_req_1;
        smb2_set_related(&rqst[2]);
 
        rc = compound_send_recv(xid, ses, server,
                                flags, 3, rqst,
                                resp_buftype, rsp_iov);
        if (rc)
-               goto iqinf_exit;
+               goto out;
 
        /* No need to bump num_remote_opens since handle immediately closed */
        if (qi.flags & PASSTHRU_FSCTL) {
@@ -1794,18 +1795,22 @@ smb2_ioctl_query_info(const unsigned int xid,
                        qi.input_buffer_length = le32_to_cpu(io_rsp->OutputCount);
                if (qi.input_buffer_length > 0 &&
                    le32_to_cpu(io_rsp->OutputOffset) + qi.input_buffer_length
-                   > rsp_iov[1].iov_len)
-                       goto e_fault;
+                   > rsp_iov[1].iov_len) {
+                       rc = -EFAULT;
+                       goto out;
+               }
 
                if (copy_to_user(&pqi->input_buffer_length,
                                 &qi.input_buffer_length,
-                                sizeof(qi.input_buffer_length)))
-                       goto e_fault;
+                                sizeof(qi.input_buffer_length))) {
+                       rc = -EFAULT;
+                       goto out;
+               }
 
                if (copy_to_user((void __user *)pqi + sizeof(struct smb_query_info),
                                 (const void *)io_rsp + le32_to_cpu(io_rsp->OutputOffset),
                                 qi.input_buffer_length))
-                       goto e_fault;
+                       rc = -EFAULT;
        } else {
                pqi = (struct smb_query_info __user *)arg;
                qi_rsp = (struct smb2_query_info_rsp *)rsp_iov[1].iov_base;
@@ -1813,28 +1818,30 @@ smb2_ioctl_query_info(const unsigned int xid,
                        qi.input_buffer_length = le32_to_cpu(qi_rsp->OutputBufferLength);
                if (copy_to_user(&pqi->input_buffer_length,
                                 &qi.input_buffer_length,
-                                sizeof(qi.input_buffer_length)))
-                       goto e_fault;
+                                sizeof(qi.input_buffer_length))) {
+                       rc = -EFAULT;
+                       goto out;
+               }
 
                if (copy_to_user(pqi + 1, qi_rsp->Buffer,
                                 qi.input_buffer_length))
-                       goto e_fault;
+                       rc = -EFAULT;
        }
 
- iqinf_exit:
-       cifs_small_buf_release(rqst[0].rq_iov[0].iov_base);
-       cifs_small_buf_release(rqst[1].rq_iov[0].iov_base);
-       cifs_small_buf_release(rqst[2].rq_iov[0].iov_base);
+out:
        free_rsp_buf(resp_buftype[0], rsp_iov[0].iov_base);
        free_rsp_buf(resp_buftype[1], rsp_iov[1].iov_base);
        free_rsp_buf(resp_buftype[2], rsp_iov[2].iov_base);
-       kfree(vars);
+       SMB2_close_free(&rqst[2]);
+free_req_1:
+       free_req1_func(&rqst[1]);
+free_open_req:
+       SMB2_open_free(&rqst[0]);
+free_output_buffer:
        kfree(buffer);
+free_vars:
+       kfree(vars);
        return rc;
-
-e_fault:
-       rc = -EFAULT;
-       goto iqinf_exit;
 }
 
 static ssize_t
@@ -2407,8 +2414,8 @@ again:
                cifs_dbg(FYI, "query_dir_first: open failed rc=%d\n", rc);
                goto qdf_free;
        }
-       fid->persistent_fid = le64_to_cpu(op_rsp->PersistentFileId);
-       fid->volatile_fid = le64_to_cpu(op_rsp->VolatileFileId);
+       fid->persistent_fid = op_rsp->PersistentFileId;
+       fid->volatile_fid = op_rsp->VolatileFileId;
 
        /* Anything else than ENODATA means a genuine error */
        if (rc && rc != -ENODATA) {
@@ -2488,7 +2495,7 @@ smb2_is_status_pending(char *buf, struct TCP_Server_Info *server)
                spin_unlock(&server->req_lock);
                wake_up(&server->request_q);
 
-               trace_smb3_add_credits(server->CurrentMid,
+               trace_smb3_pend_credits(server->CurrentMid,
                                server->conn_id, server->hostname, scredits,
                                le16_to_cpu(shdr->CreditRequest), in_flight);
                cifs_dbg(FYI, "%s: status pending add %u credits total=%d\n",
@@ -2646,7 +2653,7 @@ smb2_set_next_command(struct cifs_tcon *tcon, struct smb_rqst *rqst)
  */
 int
 smb2_query_info_compound(const unsigned int xid, struct cifs_tcon *tcon,
-                        __le16 *utf16_path, u32 desired_access,
+                        const char *path, u32 desired_access,
                         u32 class, u32 type, u32 output_len,
                         struct kvec *rsp, int *buftype,
                         struct cifs_sb_info *cifs_sb)
@@ -2664,6 +2671,14 @@ smb2_query_info_compound(const unsigned int xid, struct cifs_tcon *tcon,
        struct cifs_open_parms oparms;
        struct cifs_fid fid;
        int rc;
+       __le16 *utf16_path;
+       struct cached_fid *cfid = NULL;
+
+       if (!path)
+               path = "";
+       utf16_path = cifs_convert_path_to_utf16(path, cifs_sb);
+       if (!utf16_path)
+               return -ENOMEM;
 
        if (smb3_encryption_required(tcon))
                flags |= CIFS_TRANSFORM_REQ;
@@ -2672,6 +2687,8 @@ smb2_query_info_compound(const unsigned int xid, struct cifs_tcon *tcon,
        resp_buftype[0] = resp_buftype[1] = resp_buftype[2] = CIFS_NO_BUFFER;
        memset(rsp_iov, 0, sizeof(rsp_iov));
 
+       rc = open_cached_dir(xid, tcon, path, cifs_sb, &cfid);
+
        memset(&open_iov, 0, sizeof(open_iov));
        rqst[0].rq_iov = open_iov;
        rqst[0].rq_nvec = SMB2_CREATE_IOV_SIZE;
@@ -2693,15 +2710,29 @@ smb2_query_info_compound(const unsigned int xid, struct cifs_tcon *tcon,
        rqst[1].rq_iov = qi_iov;
        rqst[1].rq_nvec = 1;
 
-       rc = SMB2_query_info_init(tcon, server,
-                                 &rqst[1], COMPOUND_FID, COMPOUND_FID,
-                                 class, type, 0,
-                                 output_len, 0,
-                                 NULL);
+       if (cfid) {
+               rc = SMB2_query_info_init(tcon, server,
+                                         &rqst[1],
+                                         cfid->fid->persistent_fid,
+                                         cfid->fid->volatile_fid,
+                                         class, type, 0,
+                                         output_len, 0,
+                                         NULL);
+       } else {
+               rc = SMB2_query_info_init(tcon, server,
+                                         &rqst[1],
+                                         COMPOUND_FID,
+                                         COMPOUND_FID,
+                                         class, type, 0,
+                                         output_len, 0,
+                                         NULL);
+       }
        if (rc)
                goto qic_exit;
-       smb2_set_next_command(tcon, &rqst[1]);
-       smb2_set_related(&rqst[1]);
+       if (!cfid) {
+               smb2_set_next_command(tcon, &rqst[1]);
+               smb2_set_related(&rqst[1]);
+       }
 
        memset(&close_iov, 0, sizeof(close_iov));
        rqst[2].rq_iov = close_iov;
@@ -2713,9 +2744,15 @@ smb2_query_info_compound(const unsigned int xid, struct cifs_tcon *tcon,
                goto qic_exit;
        smb2_set_related(&rqst[2]);
 
-       rc = compound_send_recv(xid, ses, server,
-                               flags, 3, rqst,
-                               resp_buftype, rsp_iov);
+       if (cfid) {
+               rc = compound_send_recv(xid, ses, server,
+                                       flags, 1, &rqst[1],
+                                       &resp_buftype[1], &rsp_iov[1]);
+       } else {
+               rc = compound_send_recv(xid, ses, server,
+                                       flags, 3, rqst,
+                                       resp_buftype, rsp_iov);
+       }
        if (rc) {
                free_rsp_buf(resp_buftype[1], rsp_iov[1].iov_base);
                if (rc == -EREMCHG) {
@@ -2729,11 +2766,14 @@ smb2_query_info_compound(const unsigned int xid, struct cifs_tcon *tcon,
        *buftype = resp_buftype[1];
 
  qic_exit:
+       kfree(utf16_path);
        SMB2_open_free(&rqst[0]);
        SMB2_query_info_free(&rqst[1]);
        SMB2_close_free(&rqst[2]);
        free_rsp_buf(resp_buftype[0], rsp_iov[0].iov_base);
        free_rsp_buf(resp_buftype[2], rsp_iov[2].iov_base);
+       if (cfid)
+               close_cached_dir(cfid);
        return rc;
 }
 
@@ -2743,13 +2783,12 @@ smb2_queryfs(const unsigned int xid, struct cifs_tcon *tcon,
 {
        struct smb2_query_info_rsp *rsp;
        struct smb2_fs_full_size_info *info = NULL;
-       __le16 utf16_path = 0; /* Null - open root of share */
        struct kvec rsp_iov = {NULL, 0};
        int buftype = CIFS_NO_BUFFER;
        int rc;
 
 
-       rc = smb2_query_info_compound(xid, tcon, &utf16_path,
+       rc = smb2_query_info_compound(xid, tcon, "",
                                      FILE_READ_ATTRIBUTES,
                                      FS_FULL_SIZE_INFORMATION,
                                      SMB2_O_INFO_FILESYSTEM,
@@ -4293,12 +4332,12 @@ static __le32
 map_oplock_to_lease(u8 oplock)
 {
        if (oplock == SMB2_OPLOCK_LEVEL_EXCLUSIVE)
-               return SMB2_LEASE_WRITE_CACHING | SMB2_LEASE_READ_CACHING;
+               return SMB2_LEASE_WRITE_CACHING_LE | SMB2_LEASE_READ_CACHING_LE;
        else if (oplock == SMB2_OPLOCK_LEVEL_II)
-               return SMB2_LEASE_READ_CACHING;
+               return SMB2_LEASE_READ_CACHING_LE;
        else if (oplock == SMB2_OPLOCK_LEVEL_BATCH)
-               return SMB2_LEASE_HANDLE_CACHING | SMB2_LEASE_READ_CACHING |
-                      SMB2_LEASE_WRITE_CACHING;
+               return SMB2_LEASE_HANDLE_CACHING_LE | SMB2_LEASE_READ_CACHING_LE |
+                      SMB2_LEASE_WRITE_CACHING_LE;
        return 0;
 }
 
@@ -4360,7 +4399,7 @@ smb2_parse_lease_buf(void *buf, unsigned int *epoch, char *lease_key)
        struct create_lease *lc = (struct create_lease *)buf;
 
        *epoch = 0; /* not used */
-       if (lc->lcontext.LeaseFlags & SMB2_LEASE_FLAG_BREAK_IN_PROGRESS)
+       if (lc->lcontext.LeaseFlags & SMB2_LEASE_FLAG_BREAK_IN_PROGRESS_LE)
                return SMB2_OPLOCK_LEVEL_NOCHANGE;
        return le32_to_cpu(lc->lcontext.LeaseState);
 }
@@ -4371,7 +4410,7 @@ smb3_parse_lease_buf(void *buf, unsigned int *epoch, char *lease_key)
        struct create_lease_v2 *lc = (struct create_lease_v2 *)buf;
 
        *epoch = le16_to_cpu(lc->lcontext.Epoch);
-       if (lc->lcontext.LeaseFlags & SMB2_LEASE_FLAG_BREAK_IN_PROGRESS)
+       if (lc->lcontext.LeaseFlags & SMB2_LEASE_FLAG_BREAK_IN_PROGRESS_LE)
                return SMB2_OPLOCK_LEVEL_NOCHANGE;
        if (lease_key)
                memcpy(lease_key, &lc->lcontext.LeaseKey, SMB2_LEASE_KEY_SIZE);
@@ -5814,8 +5853,8 @@ struct smb_version_values smb20_values = {
        .protocol_id = SMB20_PROT_ID,
        .req_capabilities = 0, /* MBZ */
        .large_lock_type = 0,
-       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE_LOCK,
-       .shared_lock_type = SMB2_LOCKFLAG_SHARED_LOCK,
+       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE,
+       .shared_lock_type = SMB2_LOCKFLAG_SHARED,
        .unlock_lock_type = SMB2_LOCKFLAG_UNLOCK,
        .header_size = sizeof(struct smb2_hdr),
        .header_preamble_size = 0,
@@ -5835,8 +5874,8 @@ struct smb_version_values smb21_values = {
        .protocol_id = SMB21_PROT_ID,
        .req_capabilities = 0, /* MBZ on negotiate req until SMB3 dialect */
        .large_lock_type = 0,
-       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE_LOCK,
-       .shared_lock_type = SMB2_LOCKFLAG_SHARED_LOCK,
+       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE,
+       .shared_lock_type = SMB2_LOCKFLAG_SHARED,
        .unlock_lock_type = SMB2_LOCKFLAG_UNLOCK,
        .header_size = sizeof(struct smb2_hdr),
        .header_preamble_size = 0,
@@ -5856,8 +5895,8 @@ struct smb_version_values smb3any_values = {
        .protocol_id = SMB302_PROT_ID, /* doesn't matter, send protocol array */
        .req_capabilities = SMB2_GLOBAL_CAP_DFS | SMB2_GLOBAL_CAP_LEASING | SMB2_GLOBAL_CAP_LARGE_MTU | SMB2_GLOBAL_CAP_PERSISTENT_HANDLES | SMB2_GLOBAL_CAP_ENCRYPTION | SMB2_GLOBAL_CAP_DIRECTORY_LEASING,
        .large_lock_type = 0,
-       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE_LOCK,
-       .shared_lock_type = SMB2_LOCKFLAG_SHARED_LOCK,
+       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE,
+       .shared_lock_type = SMB2_LOCKFLAG_SHARED,
        .unlock_lock_type = SMB2_LOCKFLAG_UNLOCK,
        .header_size = sizeof(struct smb2_hdr),
        .header_preamble_size = 0,
@@ -5877,8 +5916,8 @@ struct smb_version_values smbdefault_values = {
        .protocol_id = SMB302_PROT_ID, /* doesn't matter, send protocol array */
        .req_capabilities = SMB2_GLOBAL_CAP_DFS | SMB2_GLOBAL_CAP_LEASING | SMB2_GLOBAL_CAP_LARGE_MTU | SMB2_GLOBAL_CAP_PERSISTENT_HANDLES | SMB2_GLOBAL_CAP_ENCRYPTION | SMB2_GLOBAL_CAP_DIRECTORY_LEASING,
        .large_lock_type = 0,
-       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE_LOCK,
-       .shared_lock_type = SMB2_LOCKFLAG_SHARED_LOCK,
+       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE,
+       .shared_lock_type = SMB2_LOCKFLAG_SHARED,
        .unlock_lock_type = SMB2_LOCKFLAG_UNLOCK,
        .header_size = sizeof(struct smb2_hdr),
        .header_preamble_size = 0,
@@ -5898,8 +5937,8 @@ struct smb_version_values smb30_values = {
        .protocol_id = SMB30_PROT_ID,
        .req_capabilities = SMB2_GLOBAL_CAP_DFS | SMB2_GLOBAL_CAP_LEASING | SMB2_GLOBAL_CAP_LARGE_MTU | SMB2_GLOBAL_CAP_PERSISTENT_HANDLES | SMB2_GLOBAL_CAP_ENCRYPTION | SMB2_GLOBAL_CAP_DIRECTORY_LEASING,
        .large_lock_type = 0,
-       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE_LOCK,
-       .shared_lock_type = SMB2_LOCKFLAG_SHARED_LOCK,
+       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE,
+       .shared_lock_type = SMB2_LOCKFLAG_SHARED,
        .unlock_lock_type = SMB2_LOCKFLAG_UNLOCK,
        .header_size = sizeof(struct smb2_hdr),
        .header_preamble_size = 0,
@@ -5919,8 +5958,8 @@ struct smb_version_values smb302_values = {
        .protocol_id = SMB302_PROT_ID,
        .req_capabilities = SMB2_GLOBAL_CAP_DFS | SMB2_GLOBAL_CAP_LEASING | SMB2_GLOBAL_CAP_LARGE_MTU | SMB2_GLOBAL_CAP_PERSISTENT_HANDLES | SMB2_GLOBAL_CAP_ENCRYPTION | SMB2_GLOBAL_CAP_DIRECTORY_LEASING,
        .large_lock_type = 0,
-       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE_LOCK,
-       .shared_lock_type = SMB2_LOCKFLAG_SHARED_LOCK,
+       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE,
+       .shared_lock_type = SMB2_LOCKFLAG_SHARED,
        .unlock_lock_type = SMB2_LOCKFLAG_UNLOCK,
        .header_size = sizeof(struct smb2_hdr),
        .header_preamble_size = 0,
@@ -5940,8 +5979,8 @@ struct smb_version_values smb311_values = {
        .protocol_id = SMB311_PROT_ID,
        .req_capabilities = SMB2_GLOBAL_CAP_DFS | SMB2_GLOBAL_CAP_LEASING | SMB2_GLOBAL_CAP_LARGE_MTU | SMB2_GLOBAL_CAP_PERSISTENT_HANDLES | SMB2_GLOBAL_CAP_ENCRYPTION | SMB2_GLOBAL_CAP_DIRECTORY_LEASING,
        .large_lock_type = 0,
-       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE_LOCK,
-       .shared_lock_type = SMB2_LOCKFLAG_SHARED_LOCK,
+       .exclusive_lock_type = SMB2_LOCKFLAG_EXCLUSIVE,
+       .shared_lock_type = SMB2_LOCKFLAG_SHARED,
        .unlock_lock_type = SMB2_LOCKFLAG_UNLOCK,
        .header_size = sizeof(struct smb2_hdr),
        .header_preamble_size = 0,