1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
diff -rupN vsock-only/linux/af_vsock.c vsock-only.new/linux/af_vsock.c
--- vsock-only/linux/af_vsock.c 2015-05-05 11:51:59.794166063 -0400
+++ vsock-only.new/linux/af_vsock.c 2015-05-05 11:53:38.621171420 -0400
@@ -4874,9 +4874,11 @@ VSockVmciStreamRecvmsg(struct kiocb *kio
}
if (flags & MSG_PEEK) {
- read = vmci_qpair_peekv(vsk->qpair, msg->msg_iov, len - copied, 0);
+ struct iovec iov = iov_iter_iovec(&msg->msg_iter);
+ read = vmci_qpair_peekv(vsk->qpair, &iov, len - copied, 0);
} else {
- read = vmci_qpair_dequev(vsk->qpair, msg->msg_iov, len - copied, 0);
+ struct iovec iov = iov_iter_iovec(&msg->msg_iter);
+ read = vmci_qpair_dequev(vsk->qpair, &iov, len - copied, 0);
}
if (read < 0) {
diff -rupN vsock-only/linux/af_vsock.c vsock-only.new/linux/af_vsock.c
--- vsock-only/linux/af_vsock.c 2015-05-05 11:53:59.937172575 -0400
+++ vsock-only.new/linux/af_vsock.c 2015-05-05 11:59:25.824190240 -0400
@@ -4628,9 +4628,12 @@ VSockVmciStreamSendmsg(struct kiocb *kio
* size. It is the caller's responsibility to check how many bytes we were
* able to send.
*/
-
- written = vmci_qpair_enquev(vsk->qpair, msg->msg_iov,
- len - totalWritten, 0);
+ {
+ struct iovec iov = iov_iter_iovec(&msg->msg_iter);
+ written = vmci_qpair_enquev(vsk->qpair, &iov,
+ len - totalWritten, 0);
+ }
+
if (written < 0) {
err = -ENOMEM;
goto outWait;
|