diff mbox series

[01/10] cifs: create a define for how many iovs we need for an SMB2_open()

Message ID 20180821014921.893-2-lsahlber@redhat.com
State New, archived
Headers show
Series cifs: fix correct number of IOVs for SMB2_open_init() | expand

Commit Message

Ronnie Sahlberg Aug. 21, 2018, 1:49 a.m. UTC
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
---
 fs/cifs/smb2ops.c |  4 ++--
 fs/cifs/smb2pdu.c |  4 ++--
 fs/cifs/smb2pdu.h | 12 ++++++++++++
 3 files changed, 16 insertions(+), 4 deletions(-)

Comments

Steve French Aug. 21, 2018, 1:53 a.m. UTC | #1
different than what it is already in for-next?

https://git.samba.org/?p=sfrench/cifs-2.6.git;a=commit;h=eeeb8acbfad2ce1a824c7fe6e84896cc4fd44fcf

Yours might be better - let me know
On Mon, Aug 20, 2018 at 8:49 PM Ronnie Sahlberg <lsahlber@redhat.com> wrote:
>
> Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
> ---
>  fs/cifs/smb2ops.c |  4 ++--
>  fs/cifs/smb2pdu.c |  4 ++--
>  fs/cifs/smb2pdu.h | 12 ++++++++++++
>  3 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
> index 541258447c4c..247a98e6c856 100644
> --- a/fs/cifs/smb2ops.c
> +++ b/fs/cifs/smb2ops.c
> @@ -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;
> diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
> index 2f1938011395..5740aa809be6 100644
> --- a/fs/cifs/smb2pdu.c
> +++ b/fs/cifs/smb2pdu.c
> @@ -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)
> diff --git a/fs/cifs/smb2pdu.h b/fs/cifs/smb2pdu.h
> index a2eeae9e0432..8fb7887f2b3d 100644
> --- a/fs/cifs/smb2pdu.h
> +++ b/fs/cifs/smb2pdu.h
> @@ -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 */
> --
> 2.13.3
>
Steve French Aug. 21, 2018, 2:19 a.m. UTC | #2
I replaced mine with yours and pushed to for-next
On Mon, Aug 20, 2018 at 8:53 PM Steve French <smfrench@gmail.com> wrote:
>
> different than what it is already in for-next?
>
> https://git.samba.org/?p=sfrench/cifs-2.6.git;a=commit;h=eeeb8acbfad2ce1a824c7fe6e84896cc4fd44fcf
>
> Yours might be better - let me know
> On Mon, Aug 20, 2018 at 8:49 PM Ronnie Sahlberg <lsahlber@redhat.com> wrote:
> >
> > Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
> > ---
> >  fs/cifs/smb2ops.c |  4 ++--
> >  fs/cifs/smb2pdu.c |  4 ++--
> >  fs/cifs/smb2pdu.h | 12 ++++++++++++
> >  3 files changed, 16 insertions(+), 4 deletions(-)
> >
> > diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
> > index 541258447c4c..247a98e6c856 100644
> > --- a/fs/cifs/smb2ops.c
> > +++ b/fs/cifs/smb2ops.c
> > @@ -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;
> > diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
> > index 2f1938011395..5740aa809be6 100644
> > --- a/fs/cifs/smb2pdu.c
> > +++ b/fs/cifs/smb2pdu.c
> > @@ -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)
> > diff --git a/fs/cifs/smb2pdu.h b/fs/cifs/smb2pdu.h
> > index a2eeae9e0432..8fb7887f2b3d 100644
> > --- a/fs/cifs/smb2pdu.h
> > +++ b/fs/cifs/smb2pdu.h
> > @@ -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 */
> > --
> > 2.13.3
> >
>
>
> --
> Thanks,
>
> Steve
diff mbox series

Patch

diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
index 541258447c4c..247a98e6c856 100644
--- a/fs/cifs/smb2ops.c
+++ b/fs/cifs/smb2ops.c
@@ -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;
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
index 2f1938011395..5740aa809be6 100644
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -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)
diff --git a/fs/cifs/smb2pdu.h b/fs/cifs/smb2pdu.h
index a2eeae9e0432..8fb7887f2b3d 100644
--- a/fs/cifs/smb2pdu.h
+++ b/fs/cifs/smb2pdu.h
@@ -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 */