X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fblock%2Fnbd.c;h=b98b70b8fdb991cfed4087ae68109a877b93e094;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=3554188ebe4f0f64fe558e80708647ae878ed3e5;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index 3554188eb..b98b70b8f 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -158,15 +158,12 @@ static void nbd_end_request(struct request *req) static int sock_xmit(struct socket *sock, int send, void *buf, int size, int msg_flags) { - mm_segment_t oldfs; int result; struct msghdr msg; - struct iovec iov; + struct kvec iov; unsigned long flags; sigset_t oldset; - oldfs = get_fs(); - set_fs(get_ds()); /* Allow interception of SIGKILL only * Don't allow other signals to interrupt the transmission */ spin_lock_irqsave(¤t->sighand->siglock, flags); @@ -182,17 +179,15 @@ static int sock_xmit(struct socket *sock, int send, void *buf, int size, iov.iov_len = size; 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_namelen = 0; msg.msg_flags = msg_flags | MSG_NOSIGNAL; if (send) - result = sock_sendmsg(sock, &msg, size); + result = kernel_sendmsg(sock, &msg, &iov, 1, size); else - result = sock_recvmsg(sock, &msg, size, 0); + result = kernel_recvmsg(sock, &msg, &iov, 1, size, 0); if (signal_pending(current)) { siginfo_t info; @@ -219,7 +214,6 @@ static int sock_xmit(struct socket *sock, int send, void *buf, int size, recalc_sigpending(); spin_unlock_irqrestore(¤t->sighand->siglock, flags); - set_fs(oldfs); return result; }