diff options
author | Markus Kitsinger (SwooshyCueb) | 2016-05-26 00:58:47 -0500 |
---|---|---|
committer | Markus Kitsinger (SwooshyCueb) | 2016-05-26 00:58:47 -0500 |
commit | 95f36ac986049e9ca178b9cc2bb7f2ec82f01b0a (patch) | |
tree | 3f90a62e975a815750e1fea4fb403a714c0a9c1a | |
parent | 14dbae2dbf9d74a9f0c070f8ceff8883f5c49e4c (diff) | |
download | aur-95f36ac986049e9ca178b9cc2bb7f2ec82f01b0a.tar.gz |
Tweaks for vsock patch
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 4 | ||||
-rw-r--r-- | vsock.patch | 54 |
3 files changed, 34 insertions, 28 deletions
@@ -1,7 +1,7 @@ pkgbase = vmware-modules-dkms pkgdesc = VMware Workstation kernel modules (DKMS) pkgver = 308.0 - pkgrel = 5 + pkgrel = 6 url = http://www.vmware.com/ install = vmware-modules-dkms.install arch = i686 @@ -27,7 +27,7 @@ pkgbase = vmware-modules-dkms sha256sums = 3f6bcef6e88718a4d2b5aba8a10856ad0857006755c2ccaa5de8fc596441770c sha256sums = 9a1973abf269d7c9d49b8789e7a2e55595e712e644b2eade849fa19510b0c2f3 sha256sums = fe0018729d8ee9c2a333e9ab2125ea9e228613a743b4a692ad39a06cda7568c2 - sha256sums = 324f15cfa838e130a879ab1054a9efd0ef6378854817024f1a1617b57fb55cb9 + sha256sums = a97e5096ef1b1595b2d1ed6b86b0fde80e34c6310f566156bcd4f5d660a74a58 pkgname = vmware-modules-dkms @@ -8,7 +8,7 @@ pkgname=vmware-modules-dkms _pkgbase=vmware-modules pkgver=308.0 -pkgrel=5 +pkgrel=6 pkgdesc="VMware Workstation kernel modules (DKMS)" arch=('i686' 'x86_64') url="http://www.vmware.com/" @@ -37,7 +37,7 @@ sha256sums=('ee3e5cfac51703ac392bce540e3375680c579eaac7aa31990e1e08ada589e89b' '3f6bcef6e88718a4d2b5aba8a10856ad0857006755c2ccaa5de8fc596441770c' '9a1973abf269d7c9d49b8789e7a2e55595e712e644b2eade849fa19510b0c2f3' 'fe0018729d8ee9c2a333e9ab2125ea9e228613a743b4a692ad39a06cda7568c2' - '324f15cfa838e130a879ab1054a9efd0ef6378854817024f1a1617b57fb55cb9') + 'a97e5096ef1b1595b2d1ed6b86b0fde80e34c6310f566156bcd4f5d660a74a58') build() { diff --git a/vsock.patch b/vsock.patch index db88a7341e79..cf806c731c7b 100644 --- a/vsock.patch +++ b/vsock.patch @@ -1,5 +1,5 @@ diff --git a/vsock/linux/af_vsock.c b/vsock/linux/af_vsock.c -index bde1497..46d505f 100644 +index bde1497..40b7927 100644 --- a/vsock/linux/af_vsock.c +++ b/vsock/linux/af_vsock.c @@ -232,13 +232,27 @@ static int VSockVmciStreamSetsockopt(struct socket *sock, int level, int optname @@ -34,18 +34,28 @@ index bde1497..46d505f 100644 struct msghdr *msg, size_t len, int flags); static int VSockVmciCreate( -@@ -2826,7 +2840,9 @@ __VSockVmciCreate(struct net *net, // IN: Network namespace +@@ -2822,11 +2836,18 @@ __VSockVmciCreate(struct net *net, // IN: Network namespace + * From 2.6.9 to until 2.6.12 sk_alloc() used a cache in + * the protocol structure, but you still had to specify the size and cache + * yourself. +- * Most recently (in 2.6.24), sk_alloc() was changed to expect the ++ * In 2.6.24, sk_alloc() was changed to expect the * network namespace, and the option to zero the sock was dropped. * ++ * In 4.2, another parameter was added to sk_alloc() allowing you to specify ++ * whether or not the socket is to be a kernel socket. Previously, we passed ++ * 1 to this new parameter, but following Gentoo's lead ++ * ( https://github.com/gentoo/vmware/blob/master/app-emulation/vmware-modules/files/308-4.02-01-sk_alloc.patch#L19 ) ++ * we have switched to passing 0. */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) -+ sk = sk_alloc(net, vsockVmciFamilyOps.family, priority, &vsockVmciProto, 1); ++ sk = sk_alloc(net, vsockVmciFamilyOps.family, priority, &vsockVmciProto, 0); +#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12) sk = sk_alloc(vsockVmciFamilyOps.family, priority, vsockVmciProto.slab_obj_size, vsockVmciProto.slab); #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24) -@@ -4210,7 +4226,10 @@ VSockVmciShutdown(struct socket *sock, // IN +@@ -4210,7 +4231,10 @@ VSockVmciShutdown(struct socket *sock, // IN */ static int @@ -57,16 +67,19 @@ index bde1497..46d505f 100644 struct socket *sock, // IN: socket to send on struct msghdr *msg, // IN: message to send size_t len) // IN: length of message -@@ -4302,7 +4321,7 @@ VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED +@@ -4302,7 +4326,11 @@ VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED goto out; } -- memcpy_fromiovec(VMCI_DG_PAYLOAD(dg), msg->msg_iov, len); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) + memcpy_fromiovec(VMCI_DG_PAYLOAD(dg), msg->msg_iov, len); ++#else + memcpy_from_msg(VMCI_DG_PAYLOAD(dg), msg, len); ++#endif dg->dst = VMCI_MAKE_HANDLE(remoteAddr->svm_cid, remoteAddr->svm_port); dg->src = VMCI_MAKE_HANDLE(vsk->localAddr.svm_cid, vsk->localAddr.svm_port); -@@ -4540,7 +4559,10 @@ VSockVmciStreamGetsockopt(struct socket *sock, // IN +@@ -4540,7 +4568,10 @@ VSockVmciStreamGetsockopt(struct socket *sock, // IN */ static int @@ -78,7 +91,7 @@ index bde1497..46d505f 100644 struct socket *sock, // IN: socket to send on struct msghdr *msg, // IN: message to send size_t len) // IN: length of message -@@ -4662,7 +4684,11 @@ VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED +@@ -4662,7 +4693,11 @@ VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED * able to send. */ @@ -90,7 +103,7 @@ index bde1497..46d505f 100644 len - totalWritten, 0); if (written < 0) { err = -ENOMEM; -@@ -4709,7 +4735,10 @@ out: +@@ -4709,7 +4744,10 @@ out: */ static int @@ -102,26 +115,19 @@ index bde1497..46d505f 100644 struct socket *sock, // IN: socket to receive from struct msghdr *msg, // IN/OUT: message to receive into size_t len, // IN: length of receive buffer -@@ -4721,6 +4750,7 @@ VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED - VMCIDatagram *dg; - size_t payloadLen; - struct sk_buff *skb; -+ struct iov_iter to; - - sk = sock->sk; - noblock = flags & MSG_DONTWAIT; -@@ -4759,7 +4789,9 @@ VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED +@@ -4759,7 +4797,11 @@ VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED } /* Place the datagram payload in the user's iovec. */ -- err = skb_copy_datagram_iovec(skb, sizeof *dg, msg->msg_iov, payloadLen); -+ // err = skb_copy_datagram_iovec(skb, sizeof *dg, msg->msg_iov, payloadLen); -+ iov_iter_init(&to, READ, (struct iovec *)&msg->msg_iter.iov, 1, payloadLen); -+ err = skb_copy_datagram_iter(skb, 0, &to, payloadLen); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) + err = skb_copy_datagram_iovec(skb, sizeof *dg, msg->msg_iov, payloadLen); ++#else ++ err = skb_copy_datagram_iter(skb, sizeof *dg, &msg->msg_iter, payloadLen); ++#endif if (err) { goto out; } -@@ -4800,7 +4832,10 @@ out: +@@ -4800,7 +4842,10 @@ out: */ static int @@ -133,7 +139,7 @@ index bde1497..46d505f 100644 struct socket *sock, // IN: socket to receive from struct msghdr *msg, // IN/OUT: message to receive into size_t len, // IN: length of receive buffer -@@ -4905,9 +4940,17 @@ VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED +@@ -4905,9 +4950,17 @@ VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED } if (flags & MSG_PEEK) { |