commit: 92cecf1dbaab4333b53269e65ecbee15d9b866b0 Author: Evan Teran <evan.teran <AT> gmail <DOT> com> AuthorDate: Tue May 5 16:42:05 2015 +0000 Commit: Evan Teran <evan.teran <AT> gmail <DOT> com> CommitDate: Tue May 5 16:42:05 2015 +0000 URL: https://gitweb.gentoo.org/proj/vmware.git/commit/?id=92cecf1d
271 should now compile (and I beleive function correctly) on 3.19 I'll look into 4.x soon Package-Manager: portage-2.2.18 .../files/271-3.19-00-vmnet-warning.patch | 13 ++++++ .../files/271-3.19-01-vmblock-path.patch | 52 ++++++++++++++++++++++ .../vmware-modules/files/271-3.19-02-vmci.patch | 29 ++++++++++++ .../vmware-modules/files/271-3.19-03-vmnet.patch | 29 ++++++++++++ .../vmware-modules/files/271-3.19-04-vsock.patch | 12 +++++ .../vmware-modules/files/271-3.19-05-vsock.patch | 15 +++++++ .../vmware-modules/files/271-3.19-06-vsock.patch | 36 +++++++++++++++ .../vmware-modules/vmware-modules-271.3-r1.ebuild | 10 ++++- 8 files changed, 195 insertions(+), 1 deletion(-) diff --git a/app-emulation/vmware-modules/files/271-3.19-00-vmnet-warning.patch b/app-emulation/vmware-modules/files/271-3.19-00-vmnet-warning.patch new file mode 100644 index 0000000..b4d30c9 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-00-vmnet-warning.patch @@ -0,0 +1,13 @@ +diff -rupN vmnet-only/vm_device_version.h vmnet-only.new/vm_device_version.h +--- vmnet-only/vm_device_version.h 2013-11-06 00:40:52.000000000 -0500 ++++ vmnet-only.new/vm_device_version.h 2015-05-05 12:03:06.879202223 -0400 +@@ -53,7 +53,9 @@ + * VMware HD Audio codec + * VMware HD Audio controller + */ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) + #define PCI_VENDOR_ID_VMWARE 0x15AD ++#endif + #define PCI_DEVICE_ID_VMWARE_SVGA2 0x0405 + #define PCI_DEVICE_ID_VMWARE_SVGA 0x0710 + #define PCI_DEVICE_ID_VMWARE_NET 0x0720 diff --git a/app-emulation/vmware-modules/files/271-3.19-01-vmblock-path.patch b/app-emulation/vmware-modules/files/271-3.19-01-vmblock-path.patch new file mode 100644 index 0000000..4bf17e1 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-01-vmblock-path.patch @@ -0,0 +1,52 @@ +diff -rupN vmblock-only.orig/linux/dentry.c vmblock-only/linux/dentry.c +--- vmblock-only.orig/linux/dentry.c 2015-02-14 18:05:46.000000000 -0500 ++++ vmblock-only/linux/dentry.c 2015-02-14 18:09:59.000000000 -0500 +@@ -63,7 +63,7 @@ DentryOpRevalidate(struct dentry *dentry + unsigned int flags) // IN: lookup flags & intent + { + VMBlockInodeInfo *iinfo; +- struct nameidata actualNd; ++ struct path actualNd; + struct dentry *actualDentry; + int ret; + +diff -rupN vmblock-only.orig/linux/filesystem.c vmblock-only/linux/filesystem.c +--- vmblock-only.orig/linux/filesystem.c 2014-11-20 19:29:15.000000000 -0500 ++++ vmblock-only/linux/filesystem.c 2015-02-14 18:10:49.000000000 -0500 +@@ -322,7 +322,7 @@ Iget(struct super_block *sb, // IN: f + { + VMBlockInodeInfo *iinfo; + struct inode *inode; +- struct nameidata actualNd; ++ struct path actualNd; + + ASSERT(sb); + +diff -rupN vmblock-only.orig/shared/compat_namei.h vmblock-only/shared/compat_namei.h +--- vmblock-only.orig/shared/compat_namei.h 2014-11-20 19:29:15.000000000 -0500 ++++ vmblock-only/shared/compat_namei.h 2015-02-14 18:08:38.000000000 -0500 +@@ -26,21 +26,21 @@ + * struct. They were both replaced with a struct path. + */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +-#define compat_vmw_nd_to_dentry(nd) (nd).path.dentry ++#define compat_vmw_nd_to_dentry(nd) (nd).dentry + #else + #define compat_vmw_nd_to_dentry(nd) (nd).dentry + #endif + + /* In 2.6.25-rc2, path_release(&nd) was replaced with path_put(&nd.path). */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25) +-#define compat_path_release(nd) path_put(&(nd)->path) ++#define compat_path_release(nd) path_put(nd) + #else + #define compat_path_release(nd) path_release(nd) + #endif + + /* path_lookup was removed in 2.6.39 merge window VFS merge */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38) +-#define compat_path_lookup(name, flags, nd) kern_path(name, flags, &((nd)->path)) ++#define compat_path_lookup(name, flags, nd) kern_path(name, flags, nd) + #else + #define compat_path_lookup(name, flags, nd) path_lookup(name, flags, nd) + #endif diff --git a/app-emulation/vmware-modules/files/271-3.19-02-vmci.patch b/app-emulation/vmware-modules/files/271-3.19-02-vmci.patch new file mode 100644 index 0000000..a8ec2b1 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-02-vmci.patch @@ -0,0 +1,29 @@ +diff -rupN vmci-only/linux/vmciKernelIf.c vmci-only.new/linux/vmciKernelIf.c +--- vmci-only/linux/vmciKernelIf.c 2015-05-05 11:22:55.276071501 -0400 ++++ vmci-only.new/linux/vmciKernelIf.c 2015-05-05 11:23:58.912074950 -0400 +@@ -40,6 +40,7 @@ + #include <linux/socket.h> /* For memcpy_{to,from}iovec(). */ + #include <linux/vmalloc.h> + #include <linux/wait.h> ++#include <linux/skbuff.h> + + #include "compat_highmem.h" + #include "compat_interrupt.h" +diff -rupN vmci-only/linux/vmciKernelIf.c vmci-only.new/linux/vmciKernelIf.c +--- vmci-only/linux/vmciKernelIf.c 2013-11-05 23:33:26.000000000 -0500 ++++ vmci-only.new/linux/vmciKernelIf.c 2015-05-05 11:21:59.929068500 -0400 +@@ -1246,11 +1246,11 @@ __VMCIMemcpyFromQueue(void *dest, + } + + if (isIovec) { +- struct iovec *iov = (struct iovec *)dest; ++ struct msghdr *msg = dest; + int err; + + /* The iovec will track bytesCopied internally. */ +- err = memcpy_toiovec(iov, (uint8 *)va + pageOffset, toCopy); ++ err = memcpy_to_msg(msg, (uint8 *)va + pageOffset, toCopy); + if (err != 0) { + kunmap(kernelIf->page[pageIndex]); + return VMCI_ERROR_INVALID_ARGS; + diff --git a/app-emulation/vmware-modules/files/271-3.19-03-vmnet.patch b/app-emulation/vmware-modules/files/271-3.19-03-vmnet.patch new file mode 100644 index 0000000..041bfb6 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-03-vmnet.patch @@ -0,0 +1,29 @@ +diff -ur vmnet-only.orig/driver.c vmnet-only/driver.c +--- vmnet-only.orig/driver.c 2014-06-13 02:38:25.000000000 +0200 ++++ vmnet-only/driver.c 2015-02-21 17:31:22.630656305 +0100 +@@ -1236,8 +1236,8 @@ + struct inode *inode = NULL; + long err; + +- if (filp && filp->f_dentry) { +- inode = filp->f_dentry->d_inode; ++ if (filp && filp->f_path.dentry) { ++ inode = filp->f_path.dentry->d_inode; + } + err = VNetFileOpIoctl(inode, filp, iocmd, ioarg); + return err; +diff -ur vmnet-only.orig/userif.c vmnet-only/userif.c +--- vmnet-only.orig/userif.c 2014-06-13 02:38:25.000000000 +0200 ++++ vmnet-only/userif.c 2015-02-21 17:37:46.154589854 +0100 +@@ -523,7 +523,10 @@ + .iov_base = buf, + .iov_len = len, + }; +- return skb_copy_datagram_iovec(skb, 0, &iov, len); ++ struct iov_iter to; ++ ++ iov_iter_init(&to, READ, &iov, 1, len); ++ return skb_copy_datagram_iter(skb, 0, &to, len); + } + + diff --git a/app-emulation/vmware-modules/files/271-3.19-04-vsock.patch b/app-emulation/vmware-modules/files/271-3.19-04-vsock.patch new file mode 100644 index 0000000..8c9d3cb --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-04-vsock.patch @@ -0,0 +1,12 @@ +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:26:05.145081792 -0400 ++++ vsock-only.new/linux/af_vsock.c 2015-05-05 11:30:54.304097466 -0400 +@@ -4266,7 +4266,7 @@ VSockVmciDgramSendmsg(struct kiocb *kioc + goto out; + } + +- memcpy_fromiovec(VMCI_DG_PAYLOAD(dg), msg->msg_iov, len); ++ memcpy_from_msg(VMCI_DG_PAYLOAD(dg), msg, len); + + dg->dst = VMCI_MAKE_HANDLE(remoteAddr->svm_cid, remoteAddr->svm_port); + dg->src = VMCI_MAKE_HANDLE(vsk->localAddr.svm_cid, vsk->localAddr.svm_port); diff --git a/app-emulation/vmware-modules/files/271-3.19-05-vsock.patch b/app-emulation/vmware-modules/files/271-3.19-05-vsock.patch new file mode 100644 index 0000000..2e41230 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-05-vsock.patch @@ -0,0 +1,15 @@ +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:31:35.710099711 -0400 ++++ vsock-only.new/linux/af_vsock.c 2015-05-05 11:36:33.260115840 -0400 +@@ -4727,7 +4727,11 @@ VSockVmciDgramRecvmsg(struct kiocb *kioc + } + + /* Place the datagram payload in the user's iovec. */ ++#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; + } diff --git a/app-emulation/vmware-modules/files/271-3.19-06-vsock.patch b/app-emulation/vmware-modules/files/271-3.19-06-vsock.patch new file mode 100644 index 0000000..a2b0136 --- /dev/null +++ b/app-emulation/vmware-modules/files/271-3.19-06-vsock.patch @@ -0,0 +1,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; diff --git a/app-emulation/vmware-modules/vmware-modules-271.3-r1.ebuild b/app-emulation/vmware-modules/vmware-modules-271.3-r1.ebuild index 96c6ccf..66c0b2b 100644 --- a/app-emulation/vmware-modules/vmware-modules-271.3-r1.ebuild +++ b/app-emulation/vmware-modules/vmware-modules-271.3-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2014 Gentoo Foundation +# Copyright 1999-2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/app-emulation/vmware-modules/vmware-modules-271.3.ebuild,v 1.5 2014/06/09 15:24:07 dilfridge Exp $ @@ -84,6 +84,14 @@ src_prepare() { kernel_is ge 3 15 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.15-01-vsock.patch" kernel_is ge 3 17 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.17-00-netdev.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-00-vmnet-warning.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-01-vmblock-path.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-02-vmci.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-03-vmnet.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-04-vsock.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-05-vsock.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-06-vsock.patch" + # Allow user patches so they can support RC kernels and whatever else epatch_user }