diff options
author | Alexander Viro <viro@www.linux.org.uk> | 2004-07-15 22:05:19 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-07-15 22:05:19 -0700 |
commit | b146166e1d6e82f226ba1679962837603b44e1ed (patch) | |
tree | c599107aae4be4fbb98dd5f831de40632e3164f9 /net | |
parent | b145333f8f6d2513baf9ffcd52552db7ecb7f97d (diff) | |
download | history-b146166e1d6e82f226ba1679962837603b44e1ed.tar.gz |
[PATCH] sparse: iovec cleanups - the rest
the rest of iovec cleanups: nbd, dvb-net, sock.c::sock_no_sendpage(),
econet over udp and ip_vs switched to use of kvec and kernel_...msg().
Diffstat (limited to 'net')
-rw-r--r-- | net/core/sock.c | 28 | ||||
-rw-r--r-- | net/econet/af_econet.c | 32 | ||||
-rw-r--r-- | net/ipv4/ipvs/ip_vs_sync.c | 36 |
3 files changed, 21 insertions, 75 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index 724b6978d38e34..f8688edc720148 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -1065,30 +1065,12 @@ int sock_no_mmap(struct file *file, struct socket *sock, struct vm_area_struct * ssize_t sock_no_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags) { ssize_t res; - struct msghdr msg; - struct iovec iov; - mm_segment_t old_fs; - char *kaddr; - - kaddr = kmap(page); - - msg.msg_name = NULL; - msg.msg_namelen = 0; - msg.msg_iov = &iov; - msg.msg_iovlen = 1; - msg.msg_control = NULL; - msg.msg_controllen = 0; - msg.msg_flags = flags; - - /* This cast is ok because of the "set_fs(KERNEL_DS)" */ - iov.iov_base = (void __user *) (kaddr + offset); + struct msghdr msg = {.msg_flags = flags}; + struct kvec iov; + char *kaddr = kmap(page); + iov.iov_base = kaddr + offset; iov.iov_len = size; - - old_fs = get_fs(); - set_fs(KERNEL_DS); - res = sock_sendmsg(sock, &msg, size); - set_fs(old_fs); - + res = kernel_sendmsg(sock, &msg, &iov, 1, size); kunmap(page); return res; } diff --git a/net/econet/af_econet.c b/net/econet/af_econet.c index 4c9d71fd3148a6..07b4cff2f44d30 100644 --- a/net/econet/af_econet.c +++ b/net/econet/af_econet.c @@ -774,38 +774,22 @@ static int ec_queue_packet(struct sock *sk, struct sk_buff *skb, static void aun_send_response(__u32 addr, unsigned long seq, int code, int cb) { - struct sockaddr_in sin; - struct iovec iov; - struct aunhdr ah; + struct sockaddr_in sin = { + .sin_family = AF_INET, + .sin_port = htons(AUN_PORT), + .sin_addr = {.s_addr = addr} + }; + struct aunhdr ah = {.code = code, .cb = cb, .handle = seq}; + struct kvec iov = {.iov_base = (void *)&ah, .iov_len = sizeof(ah)}; struct msghdr udpmsg; - int err; - mm_segment_t oldfs; - memset(&sin, 0, sizeof(sin)); - sin.sin_family = AF_INET; - sin.sin_port = htons(AUN_PORT); - sin.sin_addr.s_addr = addr; - - ah.code = code; - ah.pad = 0; - ah.port = 0; - ah.cb = cb; - ah.handle = seq; - - iov.iov_base = (void *)&ah; - iov.iov_len = sizeof(ah); - udpmsg.msg_name = (void *)&sin; udpmsg.msg_namelen = sizeof(sin); - udpmsg.msg_iov = &iov; - udpmsg.msg_iovlen = 1; udpmsg.msg_control = NULL; udpmsg.msg_controllen = 0; udpmsg.msg_flags=0; - oldfs = get_fs(); set_fs(KERNEL_DS); - err = sock_sendmsg(udpsock, &udpmsg, sizeof(ah)); - set_fs(oldfs); + kernel_sendmsg(udpsock, &udpmsg, &iov, 1, sizeof(ah)); } diff --git a/net/ipv4/ipvs/ip_vs_sync.c b/net/ipv4/ipvs/ip_vs_sync.c index e7f3f28a70a50b..80fdab71e20cf4 100644 --- a/net/ipv4/ipvs/ip_vs_sync.c +++ b/net/ipv4/ipvs/ip_vs_sync.c @@ -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 = NULL; - 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; |