diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2014-11-24 10:42:55 -0500 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2014-12-09 16:29:03 -0500 |
| commit | c0371da6047abd261bc483c744dbc7d81a116172 (patch) | |
| tree | 73b4d685f311a83e04f3a684ce18225b409b3f5f /drivers/vhost | |
| parent | d838df2e5dcbb6ed4d82854869e9a30f9aeef6da (diff) | |
put iov_iter into msghdr
Note that the code _using_ ->msg_iter at that point will be very
unhappy with anything other than unshifted iovec-backed iov_iter.
We still need to convert users to proper primitives.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'drivers/vhost')
| -rw-r--r-- | drivers/vhost/net.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c index 8dae2f724a35..9f06e70a2631 100644 --- a/drivers/vhost/net.c +++ b/drivers/vhost/net.c | |||
| @@ -342,7 +342,6 @@ static void handle_tx(struct vhost_net *net) | |||
| 342 | .msg_namelen = 0, | 342 | .msg_namelen = 0, |
| 343 | .msg_control = NULL, | 343 | .msg_control = NULL, |
| 344 | .msg_controllen = 0, | 344 | .msg_controllen = 0, |
| 345 | .msg_iov = vq->iov, | ||
| 346 | .msg_flags = MSG_DONTWAIT, | 345 | .msg_flags = MSG_DONTWAIT, |
| 347 | }; | 346 | }; |
| 348 | size_t len, total_len = 0; | 347 | size_t len, total_len = 0; |
| @@ -396,8 +395,8 @@ static void handle_tx(struct vhost_net *net) | |||
| 396 | } | 395 | } |
| 397 | /* Skip header. TODO: support TSO. */ | 396 | /* Skip header. TODO: support TSO. */ |
| 398 | s = move_iovec_hdr(vq->iov, nvq->hdr, hdr_size, out); | 397 | s = move_iovec_hdr(vq->iov, nvq->hdr, hdr_size, out); |
| 399 | msg.msg_iovlen = out; | ||
| 400 | len = iov_length(vq->iov, out); | 398 | len = iov_length(vq->iov, out); |
| 399 | iov_iter_init(&msg.msg_iter, WRITE, vq->iov, out, len); | ||
| 401 | /* Sanity check */ | 400 | /* Sanity check */ |
| 402 | if (!len) { | 401 | if (!len) { |
| 403 | vq_err(vq, "Unexpected header len for TX: " | 402 | vq_err(vq, "Unexpected header len for TX: " |
| @@ -562,7 +561,6 @@ static void handle_rx(struct vhost_net *net) | |||
| 562 | .msg_namelen = 0, | 561 | .msg_namelen = 0, |
| 563 | .msg_control = NULL, /* FIXME: get and handle RX aux data. */ | 562 | .msg_control = NULL, /* FIXME: get and handle RX aux data. */ |
| 564 | .msg_controllen = 0, | 563 | .msg_controllen = 0, |
| 565 | .msg_iov = vq->iov, | ||
| 566 | .msg_flags = MSG_DONTWAIT, | 564 | .msg_flags = MSG_DONTWAIT, |
| 567 | }; | 565 | }; |
| 568 | struct virtio_net_hdr_mrg_rxbuf hdr = { | 566 | struct virtio_net_hdr_mrg_rxbuf hdr = { |
| @@ -600,7 +598,7 @@ static void handle_rx(struct vhost_net *net) | |||
| 600 | break; | 598 | break; |
| 601 | /* On overrun, truncate and discard */ | 599 | /* On overrun, truncate and discard */ |
| 602 | if (unlikely(headcount > UIO_MAXIOV)) { | 600 | if (unlikely(headcount > UIO_MAXIOV)) { |
| 603 | msg.msg_iovlen = 1; | 601 | iov_iter_init(&msg.msg_iter, READ, vq->iov, 1, 1); |
| 604 | err = sock->ops->recvmsg(NULL, sock, &msg, | 602 | err = sock->ops->recvmsg(NULL, sock, &msg, |
| 605 | 1, MSG_DONTWAIT | MSG_TRUNC); | 603 | 1, MSG_DONTWAIT | MSG_TRUNC); |
| 606 | pr_debug("Discarded rx packet: len %zd\n", sock_len); | 604 | pr_debug("Discarded rx packet: len %zd\n", sock_len); |
| @@ -626,7 +624,7 @@ static void handle_rx(struct vhost_net *net) | |||
| 626 | /* Copy the header for use in VIRTIO_NET_F_MRG_RXBUF: | 624 | /* Copy the header for use in VIRTIO_NET_F_MRG_RXBUF: |
| 627 | * needed because recvmsg can modify msg_iov. */ | 625 | * needed because recvmsg can modify msg_iov. */ |
| 628 | copy_iovec_hdr(vq->iov, nvq->hdr, sock_hlen, in); | 626 | copy_iovec_hdr(vq->iov, nvq->hdr, sock_hlen, in); |
| 629 | msg.msg_iovlen = in; | 627 | iov_iter_init(&msg.msg_iter, READ, vq->iov, in, sock_len); |
| 630 | err = sock->ops->recvmsg(NULL, sock, &msg, | 628 | err = sock->ops->recvmsg(NULL, sock, &msg, |
| 631 | sock_len, MSG_DONTWAIT | MSG_TRUNC); | 629 | sock_len, MSG_DONTWAIT | MSG_TRUNC); |
| 632 | /* Userspace might have consumed the packet meanwhile: | 630 | /* Userspace might have consumed the packet meanwhile: |
