diff --git a/app-emulation/vmware-modules/Manifest b/app-emulation/vmware-modules/Manifest index 9918468..a52072f 100644 --- a/app-emulation/vmware-modules/Manifest +++ b/app-emulation/vmware-modules/Manifest @@ -9,6 +9,9 @@ AUX 305-putname.patch 394 SHA256 b8103d3c72c24696e974e49dcdcdf2d5a2b2c2fdd5f6ca0 AUX 305-vfsfollowlink.patch 1219 SHA256 b195f6492a172f682d55fb506ba02c473fd924bb47dc0d1359dd5de163b4da22 SHA512 b675f68175be0b7003d2f80c54dce05a064f8d5bd8744d40571d3d1e0153c01f909e37e0403e53f23a6d61383a9b054c40a2a9ffa95dd765eeffb0c7e739ff1d WHIRLPOOL 3e108ee29c2050029c6079f652e2670529a9f6b220524db214c7dadba3dcaef8fa1ab261f0e10ffa7506456d9f3cccc954bf6a82960e78ebd120c1eb2aac68e8 AUX 305-vmblock-3.14.patch 533 SHA256 2158c00df00e9ea47983b91bf6e72e98c3bc128bd3df1fbd553a8711a9356b9c SHA512 e005e612ad603a5522c7e402c92a6bc6a5802967d4b8211043cf6abe6fc63b416ef8734c86a1b548cbc97eb5f3f48b6187ed7f13da48b6879099df93d2ac43ba WHIRLPOOL f183495b2f35b95c065ac12bad450239e415953efef5dc36912c8b2e4f1495b752939617b4392fe3b6409adb1a2e00b87192168515b2a1d5009879fcdf37f94b AUX 305-vmblock.patch 1558 SHA256 7b23b17f5049431227b1090ce367368e96c815839c1f468cdc728a1723750eeb SHA512 640e1105c52ba2d59f10a1a7684d0b171f6200fd643ae36b13e1abbfe2827daba8d58c33ba1121978f4273bfd601267e9a95c5208249f1e20874cb48d4af0ef5 WHIRLPOOL b0f3ea5d7093aa4c3ebcf76516e48fd8bd7617a57917e5bd71df126bce885b9c162c7fc9c1fd1ded716231b3463af9398284b03a571609064344da1473dcef7d +AUX af_vsock-4.0.4.patch 2147 SHA256 4c8a532d9dd6d5a4f9dd78ce58f1eb160564f3b171f6898d7b42ad2055b3cd36 SHA512 da814dd04a08685c148a276eb9e4ea3a95f821e3d6e03b4fbe46c4fc0a8864b074e9dafcd606d8245adac324f5f54757b9e74936e4d8fa5e0a264407e5aec829 WHIRLPOOL cce9148a509ba61c5d0ec171a012c32c86475c380216b3c00008cc5121106552aad8692067fae46d6c1cb1853d29778caad63c67ff55f02bf719068acfba8f4f AUX hardened.patch 5052 SHA256 191cf892bfb9a6288d110191de824bf6243bc6f48f1e62ab49f3582c7ade5af6 SHA512 52dcca8d9f689f0a0d0ca369c0c7ce0d177de3529d2d1325330eb5a9e940a55e8930bbbe7374793bdf29cbdefac9727e9eb21d00f81ad4f5eddba3a51597b7a5 WHIRLPOOL 539731bc36f3e292403f55d74c353deeb28baa312f726b36d2a6060adf3483dfa2ed011baf93eff941fa754ef62f4d6da86868c40550ee2292c4a711e061bde0 +AUX vmblock-4.0.4.patch 2160 SHA256 a3a4ed1d5cff1639887a2275dbe0e5b9a597c906d11b63df1208a441e2de1235 SHA512 cda566b10d82ec2f98239854c647ce96e29fff77c31729aaedd14ead126c2cb424ac6a7b4ff3b5a43840b693f3f6a3ee4aa2b47d882bd442238bb41e13391a8d WHIRLPOOL 9723aa3da74a839a9cbbbe451941eeff75301a8f078a5a411749b9de3791d86e80aac1fd550b2510919adf35520e317fda45e6f8343c083e66d962368b3ea7bc +AUX vmci-4.0.4.patch 1462 SHA256 b85225fab0e6fbecd56929a22d2ae7742c4af663ab3a7bf94f8e32197262c63e SHA512 b0fd0336b59bc681af6d4c2a8539b974754b0266d1b71eb8bdb8b05f8b0865c37f06eae24030ffff7759acc95f78a63f6b627b6053fc80328223d9b78a684c72 WHIRLPOOL d5ada04eecd5ede43f7b1b44bb7cab2ad327421db142098e9509744687ca65fc80558d74bdac706fbddf7e6519bc910fa0147c1bfc94be7449c85b6ea7b689dc EBUILD vmware-modules-305.0.ebuild 3093 SHA256 c9628a27d0bbbf10fd110bef80913448b6bc0aa44c7e9d1c428fac4d58ae6793 SHA512 f7e9fcf6cf1c16ee45cc1135702853c533e20cabc2161542748cc2858b17be92776047acb8a0cf81af9763ee40f7b1703689db0c8aa560dc3ef91a2ab2f5058b WHIRLPOOL 5c75ee64decb6e93dab274d7e130cf4aee52d3d45cfd426f21fc80fe70e1c8ceb9ee7cfef9e88f735e64f78f79b08f02a7479fc6b48e8afca36f14fee46c46d0 -EBUILD vmware-modules-305.2.ebuild 3093 SHA256 60af22bbcbfd4ed8af1cc07a5884c3bdb506a03d9b860871f73e830d8125d63b SHA512 496553883d90e53df3d6556b5a5e171829c20ca18808d94160ab6385361b62c3ed47d0854e0e5d20da4722845b54d8a28278ebd494dd5f9ac28cc066a9bf4ba7 WHIRLPOOL 416408afe84e62f7726dc35196541d208ea425debe03b640698e7e16c0dc99da2575bda802ca70bb6ae88b7ed7782ff2d5bd66bde6446d16c5267c018efe169e +EBUILD vmware-modules-305.2.ebuild 3301 SHA256 328bdce6656ff55305ab93c2a8069982a69cd73a35b0a1af38c1e6d139719ea2 SHA512 1edae8750cc2433c251d4fa513365da8c6e70447e2a65c904299e03de7c0717d65de3f05511c588e38d6fabc48537b4ec78dc87a6ae508c8b952550be66c5971 WHIRLPOOL 9bc68ce1eec3d44a9ecad44205fe087380567aa303aabf57bf3cd65faa6b81ceb0f19b72873331c9080d59eb3f6290a3d2e6788b1a8b50c8bd3dfca2ad3854c9 diff --git a/app-emulation/vmware-modules/files/af_vsock-4.0.4.patch b/app-emulation/vmware-modules/files/af_vsock-4.0.4.patch new file mode 100644 index 0000000..3ad3d07 --- /dev/null +++ b/app-emulation/vmware-modules/files/af_vsock-4.0.4.patch @@ -0,0 +1,53 @@ +diff --git a/vsock-only/linux/af_vsock.c b/vsock-only/linux/af_vsock.c +index 4d0c6c3..1c29976 100644 +--- a/vsock-only/linux/af_vsock.c ++++ b/vsock-only/linux/af_vsock.c +@@ -4285,7 +4285,7 @@ VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED + 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); +@@ -4645,7 +4645,7 @@ VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED + * 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; +@@ -4704,6 +4704,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; +@@ -4742,7 +4743,9 @@ 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_iter, payloadLen); ++ iov_iter_init(&to, READ, &msg->msg_iter.iov, 1, payloadLen); ++ err = skb_copy_datagram_iter(skb, 0, &to, payloadLen); + if (err) { + goto out; + } +@@ -4888,9 +4891,9 @@ VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED + } + + 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/vmblock-4.0.4.patch b/app-emulation/vmware-modules/files/vmblock-4.0.4.patch new file mode 100644 index 0000000..4c8fe4f --- /dev/null +++ b/app-emulation/vmware-modules/files/vmblock-4.0.4.patch @@ -0,0 +1,62 @@ +diff --git a/vmblock-only/linux/dentry.c b/vmblock-only/linux/dentry.c +index d885777..513cadd 100644 +--- a/vmblock-only/linux/dentry.c ++++ b/vmblock-only/linux/dentry.c +@@ -38,6 +38,20 @@ struct dentry_operations LinkDentryOps = { + .d_revalidate = DentryOpRevalidate, + }; + ++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]; ++}; ++ ++ + + /* + *---------------------------------------------------------------------------- +diff --git a/vmblock-only/linux/file.c b/vmblock-only/linux/file.c +index 5499169..753e523 100644 +--- a/vmblock-only/linux/file.c ++++ b/vmblock-only/linux/file.c +@@ -92,7 +92,7 @@ FileOpOpen(struct inode *inode, // IN + * 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/vmblock-only/linux/filesystem.c b/vmblock-only/linux/filesystem.c +index af57499..70f97b5 100644 +--- a/vmblock-only/linux/filesystem.c ++++ b/vmblock-only/linux/filesystem.c +@@ -76,6 +76,19 @@ static struct file_system_type fsType = { + #endif + .kill_sb = kill_anon_super, + }; ++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]; ++}; ++ + + + /* diff --git a/app-emulation/vmware-modules/files/vmci-4.0.4.patch b/app-emulation/vmware-modules/files/vmci-4.0.4.patch new file mode 100644 index 0000000..dfe8b65 --- /dev/null +++ b/app-emulation/vmware-modules/files/vmci-4.0.4.patch @@ -0,0 +1,41 @@ +diff --git a/vmci-only/linux/vmciKernelIf.c b/vmci-only/linux/vmciKernelIf.c +index a51bef8..8143425 100644 +--- a/vmci-only/linux/vmciKernelIf.c ++++ b/vmci-only/linux/vmciKernelIf.c +@@ -40,7 +40,7 @@ + #include /* For memcpy_{to,from}iovec(). */ + #include + #include +- ++#include + #include "compat_highmem.h" + #include "compat_interrupt.h" + #include "compat_mm.h" +@@ -1225,11 +1225,11 @@ + } + + if (isIovec) { +- struct iovec *iov = (struct iovec *)src; ++ struct msghdr *msg = src; + int err; + + /* The iovec will track bytesCopied internally. */ +- err = memcpy_fromiovec((uint8 *)va + pageOffset, iov, toCopy); ++ err = memcpy_from_msg((uint8 *)va + pageOffset, msg, toCopy); + if (err != 0) { + if (!kernelIf->isDataMapped) { + kunmap(kernelIf->page[pageIndex]); +@@ -1300,11 +1300,11 @@ __VMCIMemcpyFromQueue(void *dest, // OUT: + } + + 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) { + if (!kernelIf->isDataMapped) { + kunmap(kernelIf->page[pageIndex]); diff --git a/app-emulation/vmware-modules/vmware-modules-305.2.ebuild b/app-emulation/vmware-modules/vmware-modules-305.2.ebuild index 3836a4a..4304cf7 100644 --- a/app-emulation/vmware-modules/vmware-modules-305.2.ebuild +++ b/app-emulation/vmware-modules/vmware-modules-305.2.ebuild @@ -87,7 +87,10 @@ src_prepare() { kernel_is ge 3 12 0 && epatch "${FILESDIR}/${PV_MAJOR}-vfsfollowlink.patch" kernel_is ge 3 14 0 && epatch "${FILESDIR}/${PV_MAJOR}-vmblock-3.14.patch" kernel_is ge 3 15 0 && epatch "${FILESDIR}/${PV_MAJOR}-kernel-3.15.patch" - kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-kernel-3.19.patch" + kernel_is ge 3 19 0 && kernel_is lt 4 && epatch "${FILESDIR}/${PV_MAJOR}-kernel-3.19.patch" + kernel_is ge 4 0 4 && epatch "${FILESDIR}/af_vsock-4.0.4.patch" + kernel_is ge 4 0 4 && epatch "${FILESDIR}/vmblock-4.0.4.patch" + kernel_is ge 4 0 4 && epatch "${FILESDIR}/vmci-4.0.4.patch" epatch_user }