This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / fs / cifs / transport.c
index cdc7ed3..f3824d5 100644 (file)
@@ -122,7 +122,8 @@ smb_send(struct socket *ssocket, struct smb_hdr *smb_buffer,
        int rc = 0;
        int i = 0;
        struct msghdr smb_msg;
-       struct kvec iov;
+       struct iovec iov;
+       mm_segment_t temp_fs;
 
        if(ssocket == NULL)
                return -ENOTSOCK; /* BB eventually add reconnect code here */
@@ -131,6 +132,8 @@ smb_send(struct socket *ssocket, struct smb_hdr *smb_buffer,
 
        smb_msg.msg_name = sin;
        smb_msg.msg_namelen = sizeof (struct sockaddr);
+       smb_msg.msg_iov = &iov;
+       smb_msg.msg_iovlen = 1;
        smb_msg.msg_control = NULL;
        smb_msg.msg_controllen = 0;
        smb_msg.msg_flags = MSG_DONTWAIT + MSG_NOSIGNAL; /* BB add more flags?*/
@@ -144,8 +147,10 @@ smb_send(struct socket *ssocket, struct smb_hdr *smb_buffer,
        cFYI(1, ("Sending smb of length %d ", smb_buf_length));
        dump_smb(smb_buffer, smb_buf_length + 4);
 
+       temp_fs = get_fs();     /* we must turn off socket api parm checking */
+       set_fs(get_ds());
        while(iov.iov_len > 0) {
-               rc = kernel_sendmsg(ssocket, &smb_msg, &iov, 1, smb_buf_length + 4);
+               rc = sock_sendmsg(ssocket, &smb_msg, smb_buf_length + 4);
                if ((rc == -ENOSPC) || (rc == -EAGAIN)) {
                        i++;
                        if(i > 60) {
@@ -164,6 +169,7 @@ smb_send(struct socket *ssocket, struct smb_hdr *smb_buffer,
                iov.iov_base += rc;
                iov.iov_len -= rc;
        }
+       set_fs(temp_fs);
 
        if (rc < 0) {
                cERROR(1,("Error %d sending data on socket to server.", rc));