cifs: create a define for how many iovs we need for an SMB2_open()
authorRonnie Sahlberg <lsahlber@redhat.com>
Tue, 21 Aug 2018 01:49:21 +0000 (11:49 +1000)
committerSteve French <stfrench@microsoft.com>
Thu, 23 Aug 2018 20:10:40 +0000 (15:10 -0500)
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/smb2ops.c
fs/cifs/smb2pdu.c
fs/cifs/smb2pdu.h

index 541258447c4c4ec203f32cc1696af56f1fdb2509..247a98e6c856eb79bd0f8110741efe2ce699099b 100644 (file)
@@ -1582,7 +1582,7 @@ smb2_queryfs(const unsigned int xid, struct cifs_tcon *tcon,
        struct smb_rqst rqst[3];
        int resp_buftype[3];
        struct kvec rsp_iov[3];
-       struct kvec open_iov[5]; /* 4 + potential padding. */
+       struct kvec open_iov[SMB2_CREATE_IOV_SIZE];
        struct kvec qi_iov[1];
        struct kvec close_iov[1];
        struct cifs_ses *ses = tcon->ses;
@@ -1603,7 +1603,7 @@ smb2_queryfs(const unsigned int xid, struct cifs_tcon *tcon,
 
        memset(&open_iov, 0, sizeof(open_iov));
        rqst[0].rq_iov = open_iov;
-       rqst[0].rq_nvec = 4;
+       rqst[0].rq_nvec = SMB2_CREATE_IOV_SIZE;
 
        oparms.tcon = tcon;
        oparms.desired_access = FILE_READ_ATTRIBUTES;
index 2f193801139537ad7b5f2659a6f0f26545e2d412..5740aa809be663547de90bf9e71ca863b74555b5 100644 (file)
@@ -2256,7 +2256,7 @@ SMB2_open(const unsigned int xid, struct cifs_open_parms *oparms, __le16 *path,
        struct TCP_Server_Info *server;
        struct cifs_tcon *tcon = oparms->tcon;
        struct cifs_ses *ses = tcon->ses;
-       struct kvec iov[5]; /* make sure at least one for each open context */
+       struct kvec iov[SMB2_CREATE_IOV_SIZE];
        struct kvec rsp_iov = {NULL, 0};
        int resp_buftype;
        int rc = 0;
@@ -2274,7 +2274,7 @@ SMB2_open(const unsigned int xid, struct cifs_open_parms *oparms, __le16 *path,
        memset(&rqst, 0, sizeof(struct smb_rqst));
        memset(&iov, 0, sizeof(iov));
        rqst.rq_iov = iov;
-       rqst.rq_nvec = 5;
+       rqst.rq_nvec = SMB2_CREATE_IOV_SIZE;
 
        rc = SMB2_open_init(tcon, &rqst, oplock, oparms, path);
        if (rc)
index a2eeae9e0432529c27360e99f480e5afc451c259..8fb7887f2b3d98d4100a0aef9cdf000d0f119df0 100644 (file)
@@ -614,6 +614,18 @@ struct smb2_tree_disconnect_rsp {
 #define SMB2_CREATE_TAG_POSIX          0x93AD25509CB411E7B42383DE968BCD7C
 
 
+/*
+ * Maximum number of iovs we need for an open/create request.
+ * [0] : struct smb2_create_req
+ * [1] : path
+ * [2] : lease context
+ * [3] : durable context
+ * [4] : posix context
+ * [5] : time warp context
+ * [6] : compound padding
+ */
+#define SMB2_CREATE_IOV_SIZE 7
+
 struct smb2_create_req {
        struct smb2_sync_hdr sync_hdr;
        __le16 StructureSize;   /* Must be 57 */