cifs: multichannel: always zero struct cifs_io_parms
authorAurelien Aptel <aaptel@suse.com>
Thu, 4 Jun 2020 15:23:55 +0000 (17:23 +0200)
committerSteve French <stfrench@microsoft.com>
Thu, 4 Jun 2020 18:50:55 +0000 (13:50 -0500)
SMB2_read/SMB2_write check and use cifs_io_parms->server, which might
be uninitialized memory.

This change makes all callers zero-initialize the struct.

Signed-off-by: Aurelien Aptel <aaptel@suse.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/file.c
fs/cifs/inode.c
fs/cifs/link.c
fs/cifs/smb2ops.c

index 226bfa5e944408597f7d814d0cca0901705fced5..de130f3aa4523df86fda01e6023bb71a1e7ddcf2 100644 (file)
@@ -1853,7 +1853,7 @@ cifs_write(struct cifsFileInfo *open_file, __u32 pid, const char *write_data,
        unsigned int xid;
        struct dentry *dentry = open_file->dentry;
        struct cifsInodeInfo *cifsi = CIFS_I(d_inode(dentry));
-       struct cifs_io_parms io_parms;
+       struct cifs_io_parms io_parms = {0};
 
        cifs_dbg(FYI, "write %zd bytes to offset %lld of %pd\n",
                 write_size, *offset, dentry);
@@ -4014,7 +4014,7 @@ cifs_read(struct file *file, char *read_data, size_t read_size, loff_t *offset)
        unsigned int xid;
        char *cur_offset;
        struct cifsFileInfo *open_file;
-       struct cifs_io_parms io_parms;
+       struct cifs_io_parms io_parms = {0};
        int buf_type = CIFS_NO_BUFFER;
        __u32 pid;
 
index b94c6398da94c72a294e8bff2a2b0957b7c53015..5416ff33940167ed3f162bc9ed3d3421e6c6764e 100644 (file)
@@ -447,7 +447,7 @@ cifs_sfu_type(struct cifs_fattr *fattr, const char *path,
        struct cifs_tcon *tcon;
        struct cifs_fid fid;
        struct cifs_open_parms oparms;
-       struct cifs_io_parms io_parms;
+       struct cifs_io_parms io_parms = {0};
        char buf[24];
        unsigned int bytes_read;
        char *pbuf;
index a25ef35b023e4e3f18906be4e30bc7c45dc9eb94..2072458e6e247f28931b92b2db7f3e17c1661f50 100644 (file)
@@ -308,7 +308,7 @@ cifs_query_mf_symlink(unsigned int xid, struct cifs_tcon *tcon,
        int oplock = 0;
        struct cifs_fid fid;
        struct cifs_open_parms oparms;
-       struct cifs_io_parms io_parms;
+       struct cifs_io_parms io_parms = {0};
        int buf_type = CIFS_NO_BUFFER;
        FILE_ALL_INFO file_info;
 
@@ -352,7 +352,7 @@ cifs_create_mf_symlink(unsigned int xid, struct cifs_tcon *tcon,
        int oplock = 0;
        struct cifs_fid fid;
        struct cifs_open_parms oparms;
-       struct cifs_io_parms io_parms;
+       struct cifs_io_parms io_parms = {0};
 
        oparms.tcon = tcon;
        oparms.cifs_sb = cifs_sb;
@@ -389,7 +389,7 @@ smb3_query_mf_symlink(unsigned int xid, struct cifs_tcon *tcon,
        int rc;
        struct cifs_fid fid;
        struct cifs_open_parms oparms;
-       struct cifs_io_parms io_parms;
+       struct cifs_io_parms io_parms = {0};
        int buf_type = CIFS_NO_BUFFER;
        __le16 *utf16_path;
        __u8 oplock = SMB2_OPLOCK_LEVEL_NONE;
index dec055d7c2f48a42e6700e537c234912ab7a8aaf..49c5c80f5d36b3f2fdc9497d1696a153cbd22adb 100644 (file)
@@ -4584,7 +4584,7 @@ smb2_make_node(unsigned int xid, struct inode *inode,
        struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
        int rc = -EPERM;
        FILE_ALL_INFO *buf = NULL;
-       struct cifs_io_parms io_parms;
+       struct cifs_io_parms io_parms = {0};
        __u32 oplock = 0;
        struct cifs_fid fid;
        struct cifs_open_parms oparms;