cifs: create a define for the max number of iov we need for a SMB2 set_info
authorRonnie Sahlberg <lsahlber@redhat.com>
Mon, 3 Sep 2018 03:33:50 +0000 (13:33 +1000)
committerSteve French <stfrench@microsoft.com>
Wed, 24 Oct 2018 02:16:04 +0000 (21:16 -0500)
So we don't overflow the io vector arrays accidentally

Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/smb2inode.c
fs/cifs/smb2pdu.h

index cfa8949..247cc0b 100644 (file)
@@ -56,7 +56,7 @@ smb2_compound_op(const unsigned int xid, struct cifs_tcon *tcon,
        struct kvec rsp_iov[3];
        struct kvec open_iov[SMB2_CREATE_IOV_SIZE];
        struct kvec qi_iov[1];
-       struct kvec si_iov[3];  /* 2 + potential padding. */
+       struct kvec si_iov[SMB2_SET_INFO_IOV_SIZE];
        struct kvec close_iov[1];
        struct smb2_query_info_rsp *qi_rsp = NULL;
        int flags = 0;
index 8fb7887..600e8fe 100644 (file)
@@ -1174,6 +1174,15 @@ struct smb2_query_info_rsp {
        __u8   Buffer[1];
 } __packed;
 
+/*
+ * Maximum number of iovs we need for a set-info request.
+ * The largest one is rename/hardlink
+ * [0] : struct smb2_set_info_req + smb2_file_[rename|link]_info
+ * [1] : path
+ * [2] : compound padding
+ */
+#define SMB2_SET_INFO_IOV_SIZE 3
+
 struct smb2_set_info_req {
        struct smb2_sync_hdr sync_hdr;
        __le16 StructureSize; /* Must be 33 */