commit: c8b1c812a25cbaa673e0fb40623d92642973c0a1 Author: Evan Teran <evan.teran <AT> gmail <DOT> com> AuthorDate: Mon Jul 6 08:22:22 2015 +0000 Commit: Evan Teran <evan.teran <AT> gmail <DOT> com> CommitDate: Mon Jul 6 08:22:22 2015 +0000 URL: https://gitweb.gentoo.org/proj/vmware.git/commit/?id=c8b1c812
version bump for vmware-workstation 10 and 3.19/4.0 kernel support Package-Manager: portage-2.2.20 .../files/279-3.18-00-version-redefined.patch | 24 ++++++++ .../files/279-3.19-00-compat-namei.patch | 23 ++++++++ .../vmware-modules/files/279-3.19-01-dentry.patch | 13 +++++ .../files/279-3.19-02-vmblock-path.patch | 67 ++++++++++++++++++++++ .../vmware-modules/files/279-3.19-03-iovec.patch | 19 ++++++ .../vmware-modules/files/279-3.19-04-iovec.patch | 39 +++++++++++++ .../files/279-3.19-05-vmci_qpair.patch | 24 ++++++++ .../vmware-modules/files/279-3.19-06-vsock.patch | 15 +++++ .../vmware-modules/files/279-3.19-07-vsock.patch | 12 ++++ ...es-279.5.ebuild => vmware-modules-279.6.ebuild} | 11 +++- .../vmware-modules/vmware-modules-304.0.ebuild | 35 +++++------ 11 files changed, 264 insertions(+), 18 deletions(-) diff --git a/app-emulation/vmware-modules/files/279-3.18-00-version-redefined.patch b/app-emulation/vmware-modules/files/279-3.18-00-version-redefined.patch new file mode 100644 index 0000000..2d38824 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.18-00-version-redefined.patch @@ -0,0 +1,24 @@ +--- a/vmci-only/shared/vm_device_version.h 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmci-only/shared/vm_device_version.h 2015-02-24 03:58:06.041605450 +0300 +@@ -53,7 +53,9 @@ + * VMware HD Audio codec + * VMware HD Audio controller + */ ++#ifndef PCI_VENDOR_ID_VMWARE + #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_VGA 0x0711 +--- a/vmnet-only/vm_device_version.h 2015-02-07 03:54:16.000000000 +0300 ++++ c/vmnet-only/vm_device_version.h 2015-02-24 03:58:06.044604981 +0300 +@@ -53,7 +53,9 @@ + * VMware HD Audio codec + * VMware HD Audio controller + */ ++#ifndef PCI_VENDOR_ID_VMWARE + #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_VGA 0x0711 diff --git a/app-emulation/vmware-modules/files/279-3.19-00-compat-namei.patch b/app-emulation/vmware-modules/files/279-3.19-00-compat-namei.patch new file mode 100644 index 0000000..ec73500 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-00-compat-namei.patch @@ -0,0 +1,23 @@ +--- a/vmblock-only/shared/compat_namei.h 2015-02-07 03:11:55.000000000 +0300 ++++ c/vmblock-only/shared/compat_namei.h 2015-02-24 03:51:25.235286047 +0300 +@@ -21,6 +21,20 @@ + + #include <linux/namei.h> + ++/* Copy-n-paste from kernel's source/fs/namei.c */ ++struct nameidata { ++ struct path path; ++ struct qstr last; ++ struct path root; ++ struct inode *inode; /* path.dentry.d_inode */ ++ unsigned int flags; ++ unsigned seq, m_seq; ++ int last_type; ++ unsigned depth; ++ struct file *base; ++ char *saved_names[MAX_NESTED_LINKS + 1]; ++}; ++ + /* + * In 2.6.25-rc2, dentry and mount objects were removed from the nameidata + * struct. They were both replaced with a struct path. diff --git a/app-emulation/vmware-modules/files/279-3.19-01-dentry.patch b/app-emulation/vmware-modules/files/279-3.19-01-dentry.patch new file mode 100644 index 0000000..6f11a52 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-01-dentry.patch @@ -0,0 +1,13 @@ +--- a/vmnet-only/driver.c 2015-02-07 03:54:17.000000000 +0300 ++++ c/vmnet-only/driver.c 2015-02-24 03:58:06.043605137 +0300 +@@ -1191,8 +1191,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 --git a/app-emulation/vmware-modules/files/279-3.19-02-vmblock-path.patch b/app-emulation/vmware-modules/files/279-3.19-02-vmblock-path.patch new file mode 100644 index 0000000..178d147 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-02-vmblock-path.patch @@ -0,0 +1,67 @@ +Sources: +https://531682.bugs.gentoo.org/attachment.cgi?id=396484 +https://531682.bugs.gentoo.org/attachment.cgi?id=396482 +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 -u vmblock-only.orig/linux/file.c vmblock-only/linux/file.c +--- vmblock-only.orig/linux/file.c 2015-02-11 12:18:29.000000000 -0500 ++++ vmblock-only/linux/file.c 2015-02-11 12:41:41.000000000 -0500 +@@ -92,7 +92,7 @@ + * and that would try to acquire the inode's semaphore; if the two inodes + * are the same we'll deadlock. + */ +- if (actualFile->f_dentry && inode == actualFile->f_dentry->d_inode) { ++ if (actualFile->f_path.dentry && inode == actualFile->f_path.dentry->d_inode) { + Warning("FileOpOpen: identical inode encountered, open cannot succeed.\n"); + if (filp_close(actualFile, current->files) < 0) { + Warning("FileOpOpen: unable to close opened file.\n"); diff --git a/app-emulation/vmware-modules/files/279-3.19-03-iovec.patch b/app-emulation/vmware-modules/files/279-3.19-03-iovec.patch new file mode 100644 index 0000000..b016fec --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-03-iovec.patch @@ -0,0 +1,19 @@ +--- a/vmnet-only/userif.c 2015-02-07 03:54:17.000000000 +0300 ++++ c/vmnet-only/userif.c 2015-02-24 03:58:06.043605137 +0300 +@@ -523,7 +523,15 @@ + .iov_base = buf, + .iov_len = len, + }; +- return skb_copy_datagram_iovec(skb, 0, &iov, len); ++ ++ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0) ++ return skb_copy_datagram_iovec(skb, 0, &iov, len); ++#else ++ struct iov_iter to; ++ iov_iter_init(&to, READ, &iov, 1, len); ++ return skb_copy_datagram_iter(skb, 0, &to, len); ++#endif + } + + diff --git a/app-emulation/vmware-modules/files/279-3.19-04-iovec.patch b/app-emulation/vmware-modules/files/279-3.19-04-iovec.patch new file mode 100644 index 0000000..9103c55 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-04-iovec.patch @@ -0,0 +1,39 @@ +diff -rupN vmci-only.old/linux/vmciKernelIf.c vmci-only/linux/vmciKernelIf.c +--- vmci-only.old/linux/vmciKernelIf.c 2015-04-28 18:05:56.000000000 +0000 ++++ vmci-only/linux/vmciKernelIf.c 2015-07-06 08:02:08.314262258 +0000 +@@ -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" +@@ -1227,11 +1228,11 @@ __VMCIMemcpyToQueue(VMCIQueue *queue, + } + + if (isIovec) { +- struct iovec *iov = (struct iovec *)src; ++ struct msghdr *msg = (struct msghdr *)src; + int err; + + /* The iovec will track bytesCopied internally. */ +- err = memcpy_fromiovec((uint8 *)va + pageOffset, iov, toCopy); ++ err = memcpy_from_msg((u8 *)va + pageOffset, msg, toCopy); + if (err != 0) { + if (!kernelIf->isDataMapped) { + kunmap(kernelIf->page[pageIndex]); +@@ -1302,11 +1303,11 @@ __VMCIMemcpyFromQueue(void *dest, + } + + if (isIovec) { +- struct iovec *iov = (struct iovec *)dest; ++ struct msghdr *msg = (struct msghdr *)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) { + if (!kernelIf->isDataMapped) { + kunmap(kernelIf->page[pageIndex]); diff --git a/app-emulation/vmware-modules/files/279-3.19-05-vmci_qpair.patch b/app-emulation/vmware-modules/files/279-3.19-05-vmci_qpair.patch new file mode 100644 index 0000000..1849a37 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-05-vmci_qpair.patch @@ -0,0 +1,24 @@ +diff -rupN vsock-only.old/linux/af_vsock.c vsock-only/linux/af_vsock.c +--- vsock-only.old/linux/af_vsock.c 2015-05-06 20:41:47.684046762 -0400 ++++ vsock-only/linux/af_vsock.c 2015-05-06 20:52:15.245080779 -0400 +@@ -4629,7 +4629,7 @@ VSockVmciStreamSendmsg(struct kiocb *kio + * able to send. + */ + +- written = vmci_qpair_enquev(vsk->qpair, msg->msg_iov, ++ written = vmci_qpair_enquev(vsk->qpair, &msg->msg_iter.iov, + len - totalWritten, 0); + if (written < 0) { + err = -ENOMEM; +@@ -4874,9 +4874,9 @@ VSockVmciStreamRecvmsg(struct kiocb *kio + } + + if (flags & MSG_PEEK) { +- read = vmci_qpair_peekv(vsk->qpair, msg->msg_iov, len - copied, 0); ++ read = vmci_qpair_peekv(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); + } else { +- read = vmci_qpair_dequev(vsk->qpair, msg->msg_iov, len - copied, 0); ++ read = vmci_qpair_dequev(vsk->qpair, &msg->msg_iter.iov, len - copied, 0); + } + + if (read < 0) { diff --git a/app-emulation/vmware-modules/files/279-3.19-06-vsock.patch b/app-emulation/vmware-modules/files/279-3.19-06-vsock.patch new file mode 100644 index 0000000..2e41230 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-06-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/279-3.19-07-vsock.patch b/app-emulation/vmware-modules/files/279-3.19-07-vsock.patch new file mode 100644 index 0000000..8c9d3cb --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.19-07-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/vmware-modules-279.5.ebuild b/app-emulation/vmware-modules/vmware-modules-279.6.ebuild similarity index 80% rename from app-emulation/vmware-modules/vmware-modules-279.5.ebuild rename to app-emulation/vmware-modules/vmware-modules-279.6.ebuild index 8ec991a..64a7d8a 100644 --- a/app-emulation/vmware-modules/vmware-modules-279.5.ebuild +++ b/app-emulation/vmware-modules/vmware-modules-279.6.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: Exp $ @@ -89,6 +89,15 @@ src_prepare() { kernel_is ge 3 15 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.15-00-readlink.patch" 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 18 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.18-00-version-redefined.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-00-compat-namei.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-01-dentry.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-02-vmblock-path.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-03-iovec.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-04-iovec.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-05-vmci_qpair.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-06-vsock.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-07-vsock.patch" # Allow user patches so they can support RC kernels and whatever else epatch_user diff --git a/app-emulation/vmware-modules/vmware-modules-304.0.ebuild b/app-emulation/vmware-modules/vmware-modules-304.0.ebuild index 8be7242..e817e97 100644 --- a/app-emulation/vmware-modules/vmware-modules-304.0.ebuild +++ b/app-emulation/vmware-modules/vmware-modules-304.0.ebuild @@ -21,7 +21,8 @@ IUSE="pax_kernel +vmci +vsock" RDEPEND="" DEPEND="${RDEPEND} - || ( =app-emulation/vmware-workstation-11.1.${PV_MINOR}* )" + || ( =app-emulation/vmware-player-7.1.${PV_MINOR}* + =app-emulation/vmware-workstation-11.1.${PV_MINOR}* )" S=${WORKDIR} @@ -78,22 +79,22 @@ src_prepare() { use pax_kernel && epatch "${FILESDIR}/${PV_MAJOR}-hardened.patch" epatch "${FILESDIR}/${PV_MAJOR}-apic.patch" - kernel_is ge 3 10 0 && epatch "${FILESDIR}/304-3.10-00-dentry.patch" - kernel_is ge 3 10 0 && epatch "${FILESDIR}/304-3.10-01-inode.patch" - kernel_is ge 3 10 0 && epatch "${FILESDIR}/304-3.10-02-control.patch" - kernel_is ge 3 11 0 && epatch "${FILESDIR}/304-3.10-03-inline.patch" - kernel_is ge 3 11 0 && epatch "${FILESDIR}/304-3.11-00-readdir.patch" - kernel_is ge 3 11 0 && epatch "${FILESDIR}/304-3.11-01-filldir.patch" - kernel_is ge 3 15 0 && epatch "${FILESDIR}/304-3.15-00-vsock.patch" - kernel_is ge 3 18 0 && epatch "${FILESDIR}/304-3.18-00-version-redefined.patch" - kernel_is ge 3 19 0 && epatch "${FILESDIR}/304-3.19-00-compat-namei.patch" - kernel_is ge 3 19 0 && epatch "${FILESDIR}/304-3.19-01-dentry.patch" - kernel_is ge 3 19 0 && epatch "${FILESDIR}/304-3.19-02-vmblock-path.patch" - kernel_is ge 3 19 0 && epatch "${FILESDIR}/304-3.19-03-iovec.patch" - kernel_is ge 3 19 0 && epatch "${FILESDIR}/304-3.19-04-iovec.patch" - kernel_is ge 3 19 0 && epatch "${FILESDIR}/304-3.19-05-vmci_qpair.patch" - kernel_is ge 3 19 0 && epatch "${FILESDIR}/304-3.19-06-vsock.patch" - kernel_is ge 3 19 0 && epatch "${FILESDIR}/304-3.19-07-vsock.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-00-dentry.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-01-inode.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-02-control.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.10-03-inline.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11-00-readdir.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11-01-filldir.patch" + kernel_is ge 3 15 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.15-00-vsock.patch" + kernel_is ge 3 18 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.18-00-version-redefined.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-00-compat-namei.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-01-dentry.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-02-vmblock-path.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-03-iovec.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-04-iovec.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-05-vmci_qpair.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-06-vsock.patch" + kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-07-vsock.patch" # Allow user patches so they can support RC kernels and whatever else epatch_user