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:
53
app-emulation/vmware-modules/files/af_vsock-4.0.4.patch
Normal file
53
app-emulation/vmware-modules/files/af_vsock-4.0.4.patch
Normal 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) {
|
||||
62
app-emulation/vmware-modules/files/vmblock-4.0.4.patch
Normal file
62
app-emulation/vmware-modules/files/vmblock-4.0.4.patch
Normal 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];
|
||||
+};
|
||||
+
|
||||
|
||||
|
||||
/*
|
||||
41
app-emulation/vmware-modules/files/vmci-4.0.4.patch
Normal file
41
app-emulation/vmware-modules/files/vmci-4.0.4.patch
Normal 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]);
|
||||
Reference in New Issue
Block a user