cifs: make smb_msg local to read_from_socket
[firefly-linux-kernel-4.4.55.git] / fs / cifs / connect.c
index 6126fbeaecb6438fe138f89f8b9240d5d5dd7e35..ed969fd5f7ccfcf202044cfde7c6950b5dbbc29e 100644 (file)
@@ -359,16 +359,20 @@ allocate_buffers(char **bigbuf, char **smallbuf, unsigned int size,
 }
 
 static int
-read_from_socket(struct TCP_Server_Info *server, struct msghdr *smb_msg,
+read_from_socket(struct TCP_Server_Info *server,
                 struct kvec *iov, unsigned int to_read,
                 unsigned int *ptotal_read, bool is_header_read)
 {
        int length, rc = 0;
        unsigned int total_read;
+       struct msghdr smb_msg;
        char *buf = iov->iov_base;
 
+       smb_msg.msg_control = NULL;
+       smb_msg.msg_controllen = 0;
+
        for (total_read = 0; total_read < to_read; total_read += length) {
-               length = kernel_recvmsg(server->ssocket, smb_msg, iov, 1,
+               length = kernel_recvmsg(server->ssocket, &smb_msg, iov, 1,
                                        to_read - total_read, 0);
                if (server->tcpStatus == CifsExiting) {
                        /* then will exit */
@@ -397,8 +401,6 @@ read_from_socket(struct TCP_Server_Info *server, struct msghdr *smb_msg,
                                iov->iov_base = (to_read - total_read) +
                                                buf;
                                iov->iov_len = to_read - total_read;
-                               smb_msg->msg_control = NULL;
-                               smb_msg->msg_controllen = 0;
                                rc = 3;
                        } else
                                rc = 1;
@@ -634,7 +636,6 @@ cifs_demultiplex_thread(void *p)
        unsigned int pdu_length, total_read;
        char *buf = NULL, *bigbuf = NULL, *smallbuf = NULL;
        struct smb_hdr *smb_buffer = NULL;
-       struct msghdr smb_msg;
        struct kvec iov;
        struct task_struct *task_to_wake = NULL;
        struct mid_q_entry *mid_entry;
@@ -665,8 +666,6 @@ cifs_demultiplex_thread(void *p)
                buf = smallbuf;
                iov.iov_base = buf;
                iov.iov_len = 4;
-               smb_msg.msg_control = NULL;
-               smb_msg.msg_controllen = 0;
                pdu_length = 4; /* enough to get RFC1001 header */
 
 incomplete_rcv:
@@ -681,7 +680,7 @@ incomplete_rcv:
                        continue;
                }
 
-               rc = read_from_socket(server, &smb_msg, &iov, pdu_length,
+               rc = read_from_socket(server, &iov, pdu_length,
                                      &total_read, true /* header read */);
                if (rc == 3)
                        goto incomplete_rcv;
@@ -710,7 +709,7 @@ incomplete_rcv:
 
                iov.iov_base = 4 + buf;
                iov.iov_len = pdu_length;
-               rc = read_from_socket(server, &smb_msg, &iov, pdu_length,
+               rc = read_from_socket(server, &iov, pdu_length,
                                      &total_read, false);
                if (rc == 2)
                        break;