VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / net / ipv4 / ipvs / ip_vs_sync.c
index 7b727a9..80fdab7 100644 (file)
@@ -555,25 +555,15 @@ static struct socket * make_receive_sock(void)
 static int
 ip_vs_send_async(struct socket *sock, const char *buffer, const size_t length)
 {
-       struct msghdr   msg;
-       mm_segment_t    oldfs;
-       struct iovec    iov;
+       struct msghdr   msg = {.msg_flags = MSG_DONTWAIT|MSG_NOSIGNAL};
+       struct kvec     iov;
        int             len;
 
        EnterFunction(7);
        iov.iov_base     = (void *)buffer;
        iov.iov_len      = length;
-       msg.msg_name     = 0;
-       msg.msg_namelen  = 0;
-       msg.msg_iov      = &iov;
-       msg.msg_iovlen   = 1;
-       msg.msg_control  = NULL;
-       msg.msg_controllen = 0;
-       msg.msg_flags    = MSG_DONTWAIT|MSG_NOSIGNAL;
-
-       oldfs = get_fs(); set_fs(KERNEL_DS);
-       len = sock_sendmsg(sock, &msg, (size_t)(length));
-       set_fs(oldfs);
+
+       len = kernel_sendmsg(sock, &msg, &iov, 1, (size_t)(length));
 
        LeaveFunction(7);
        return len;
@@ -583,27 +573,17 @@ ip_vs_send_async(struct socket *sock, const char *buffer, const size_t length)
 static int
 ip_vs_receive(struct socket *sock, char *buffer, const size_t buflen)
 {
-       struct msghdr           msg;
-       struct iovec            iov;
+       struct msghdr           msg = {NULL,};
+       struct kvec             iov;
        int                     len;
-       mm_segment_t            oldfs;
 
        EnterFunction(7);
 
        /* Receive a packet */
        iov.iov_base     = buffer;
        iov.iov_len      = (size_t)buflen;
-       msg.msg_name     = 0;
-       msg.msg_namelen  = 0;
-       msg.msg_iov      = &iov;
-       msg.msg_iovlen   = 1;
-       msg.msg_control  = NULL;
-       msg.msg_controllen = 0;
-       msg.msg_flags    = 0;
-
-       oldfs = get_fs(); set_fs(KERNEL_DS);
-       len = sock_recvmsg(sock, &msg, buflen, 0);
-       set_fs(oldfs);
+
+       len = kernel_recvmsg(sock, &msg, &iov, 1, buflen, 0);
 
        if (len < 0)
                return -1;