Fix vmware-modules-305.2

This commit fixes building of app-emulation/vmware-modules-305.2
on linux kernel 4.0.4
This commit is contained in:
Sergey Morozov 2015-06-19 14:59:35 +03:00
parent 411662529e
commit 771430f58e
5 changed files with 164 additions and 2 deletions

View File

@ -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

View File

@ -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) {

View File

@ -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];
+};
+
/*

View File

@ -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 <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"
#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]);

View File

@ -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
}