Add app-emulation/vmware-modules-279.2
This commit is contained in:
12
app-emulation/vmware-modules/files/279-apic.patch
Normal file
12
app-emulation/vmware-modules/files/279-apic.patch
Normal file
@@ -0,0 +1,12 @@
|
||||
diff --git a/vmmon-only/linux/hostif.c b/vmmon-only/linux/hostif.c
|
||||
index f1f4b10..c43242f 100644
|
||||
--- a/vmmon-only/linux/hostif.c
|
||||
+++ b/vmmon-only/linux/hostif.c
|
||||
@@ -55,6 +55,7 @@
|
||||
#include <linux/kthread.h>
|
||||
#include <linux/wait.h>
|
||||
|
||||
+#include <asm/apic.h>
|
||||
|
||||
#include "vmware.h"
|
||||
#include "x86apic.h"
|
||||
113
app-emulation/vmware-modules/files/279-hardened.patch
Normal file
113
app-emulation/vmware-modules/files/279-hardened.patch
Normal file
@@ -0,0 +1,113 @@
|
||||
diff --git a/vmmon-only/linux/driver.c b/vmmon-only/linux/driver.c
|
||||
index b21dd44..960c2aa 100644
|
||||
--- a/vmmon-only/linux/driver.c
|
||||
+++ b/vmmon-only/linux/driver.c
|
||||
@@ -178,7 +178,22 @@ static struct vm_operations_struct vmuser_mops = {
|
||||
#endif
|
||||
};
|
||||
|
||||
-static struct file_operations vmuser_fops;
|
||||
+static struct file_operations vmuser_fops = {
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .poll = LinuxDriverPoll,
|
||||
+#ifdef HAVE_UNLOCKED_IOCTL
|
||||
+ .unlocked_ioctl = LinuxDriver_UnlockedIoctl,
|
||||
+#else
|
||||
+ .ioctl = LinuxDriver_Ioctl,
|
||||
+#endif
|
||||
+#ifdef HAVE_COMPAT_IOCTL
|
||||
+ .compat_ioctl = LinuxDriver_UnlockedIoctl,
|
||||
+#endif
|
||||
+ .open = LinuxDriver_Open,
|
||||
+ .release = LinuxDriver_Close,
|
||||
+ .mmap = LinuxDriverMmap
|
||||
+};
|
||||
+
|
||||
static struct timer_list tscTimer;
|
||||
|
||||
/*
|
||||
@@ -357,27 +372,6 @@ init_module(void)
|
||||
spin_lock_init(&linuxState.pollListLock);
|
||||
#endif
|
||||
|
||||
- /*
|
||||
- * Initialize the file_operations structure. Because this code is always
|
||||
- * compiled as a module, this is fine to do it here and not in a static
|
||||
- * initializer.
|
||||
- */
|
||||
-
|
||||
- memset(&vmuser_fops, 0, sizeof vmuser_fops);
|
||||
- vmuser_fops.owner = THIS_MODULE;
|
||||
- vmuser_fops.poll = LinuxDriverPoll;
|
||||
-#ifdef HAVE_UNLOCKED_IOCTL
|
||||
- vmuser_fops.unlocked_ioctl = LinuxDriver_UnlockedIoctl;
|
||||
-#else
|
||||
- vmuser_fops.ioctl = LinuxDriver_Ioctl;
|
||||
-#endif
|
||||
-#ifdef HAVE_COMPAT_IOCTL
|
||||
- vmuser_fops.compat_ioctl = LinuxDriver_UnlockedIoctl;
|
||||
-#endif
|
||||
- vmuser_fops.open = LinuxDriver_Open;
|
||||
- vmuser_fops.release = LinuxDriver_Close;
|
||||
- vmuser_fops.mmap = LinuxDriverMmap;
|
||||
-
|
||||
#ifdef VMX86_DEVEL
|
||||
devel_init_module();
|
||||
linuxState.minor = 0;
|
||||
diff --git a/vmnet-only/driver.c b/vmnet-only/driver.c
|
||||
index b12b982..40bd4cf 100644
|
||||
--- a/vmnet-only/driver.c
|
||||
+++ b/vmnet-only/driver.c
|
||||
@@ -165,7 +165,22 @@ static long VNetFileOpUnlockedIoctl(struct file * filp,
|
||||
unsigned int iocmd, unsigned long ioarg);
|
||||
#endif
|
||||
|
||||
-static struct file_operations vnetFileOps;
|
||||
+static struct file_operations vnetFileOps = {
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .read = VNetFileOpRead,
|
||||
+ .write = VNetFileOpWrite,
|
||||
+ .poll = VNetFileOpPoll,
|
||||
+#ifdef HAVE_UNLOCKED_IOCTL
|
||||
+ .unlocked_ioctl = VNetFileOpUnlockedIoctl,
|
||||
+#else
|
||||
+ .ioctl = VNetFileOpIoctl,
|
||||
+#endif
|
||||
+#ifdef HAVE_COMPAT_IOCTL
|
||||
+ .compat_ioctl = VNetFileOpUnlockedIoctl,
|
||||
+#endif
|
||||
+ .open = VNetFileOpOpen,
|
||||
+ .release = VNetFileOpClose
|
||||
+};
|
||||
|
||||
/*
|
||||
* Utility functions
|
||||
@@ -476,28 +491,6 @@ init_module(void)
|
||||
goto err_proto;
|
||||
}
|
||||
|
||||
- /*
|
||||
- * Initialize the file_operations structure. Because this code is always
|
||||
- * compiled as a module, this is fine to do it here and not in a static
|
||||
- * initializer.
|
||||
- */
|
||||
-
|
||||
- memset(&vnetFileOps, 0, sizeof vnetFileOps);
|
||||
- vnetFileOps.owner = THIS_MODULE;
|
||||
- vnetFileOps.read = VNetFileOpRead;
|
||||
- vnetFileOps.write = VNetFileOpWrite;
|
||||
- vnetFileOps.poll = VNetFileOpPoll;
|
||||
-#ifdef HAVE_UNLOCKED_IOCTL
|
||||
- vnetFileOps.unlocked_ioctl = VNetFileOpUnlockedIoctl;
|
||||
-#else
|
||||
- vnetFileOps.ioctl = VNetFileOpIoctl;
|
||||
-#endif
|
||||
-#ifdef HAVE_COMPAT_IOCTL
|
||||
- vnetFileOps.compat_ioctl = VNetFileOpUnlockedIoctl;
|
||||
-#endif
|
||||
- vnetFileOps.open = VNetFileOpOpen;
|
||||
- vnetFileOps.release = VNetFileOpClose;
|
||||
-
|
||||
retval = register_chrdev(VNET_MAJOR_NUMBER, "vmnet", &vnetFileOps);
|
||||
if (retval) {
|
||||
LOG(0, (KERN_NOTICE "/dev/vmnet: could not register major device %d\n",
|
||||
@@ -0,0 +1,65 @@
|
||||
diff --git a/vmblock-only/Makefile.kernel b/vmblock-only/Makefile.kernel
|
||||
index ab7a727..e3ec9d2 100644
|
||||
--- a/vmblock-only/Makefile.kernel
|
||||
+++ b/vmblock-only/Makefile.kernel
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
INCLUDE += -I$(SRCROOT)/include
|
||||
|
||||
-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
|
||||
+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE)
|
||||
|
||||
EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachecreate.c, -DVMW_KMEMCR_HAS_DTOR, )
|
||||
EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/cachector.c, -DVMW_KMEMCR_CTOR_HAS_3_ARGS, )
|
||||
diff --git a/vmci-only/Makefile.kernel b/vmci-only/Makefile.kernel
|
||||
index ba343ee..861ea83 100644
|
||||
--- a/vmci-only/Makefile.kernel
|
||||
+++ b/vmci-only/Makefile.kernel
|
||||
@@ -21,7 +21,7 @@ CC_OPTS += -DVMCI
|
||||
|
||||
INCLUDE += -I$(SRCROOT)/shared -I$(SRCROOT)/common -I$(SRCROOT)/linux
|
||||
|
||||
-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
|
||||
+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE)
|
||||
|
||||
obj-m += $(DRIVER).o
|
||||
|
||||
diff --git a/vmmon-only/Makefile.kernel b/vmmon-only/Makefile.kernel
|
||||
index 8770d1d..c4746c3 100644
|
||||
--- a/vmmon-only/Makefile.kernel
|
||||
+++ b/vmmon-only/Makefile.kernel
|
||||
@@ -22,7 +22,7 @@ CC_OPTS += -DVMMON -DVMCORE
|
||||
INCLUDE := -I$(SRCROOT)/include -I$(SRCROOT)/common -I$(SRCROOT)/linux \
|
||||
-I$(SRCROOT)/vmcore
|
||||
|
||||
-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
|
||||
+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE)
|
||||
|
||||
EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/smpcall.c, -DVMW_HAVE_SMP_CALL_3ARG, )
|
||||
|
||||
diff --git a/vmnet-only/Makefile.kernel b/vmnet-only/Makefile.kernel
|
||||
index d1e3133..665d428 100644
|
||||
--- a/vmnet-only/Makefile.kernel
|
||||
+++ b/vmnet-only/Makefile.kernel
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
INCLUDE := -I$(SRCROOT)
|
||||
|
||||
-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
|
||||
+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE)
|
||||
EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_net.c,-DVMW_NETDEV_HAS_NET, )
|
||||
EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_dev_net.c,-DVMW_NETDEV_HAS_DEV_NET, )
|
||||
EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/nfhook_uses_skb.c,-DVMW_NFHOOK_USES_SKB, )
|
||||
diff --git a/vsock-only/Makefile.kernel b/vsock-only/Makefile.kernel
|
||||
index b4629ee..264b8cb 100644
|
||||
--- a/vsock-only/Makefile.kernel
|
||||
+++ b/vsock-only/Makefile.kernel
|
||||
@@ -25,7 +25,7 @@ INCLUDE += -I$(SRCROOT)/include
|
||||
INCLUDE += -I$(SRCROOT)/linux
|
||||
INCLUDE += -I$(SRCROOT)/common
|
||||
|
||||
-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
|
||||
+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE)
|
||||
EXTRA_CFLAGS += $(call vm_check_build, $(AUTOCONF_DIR)/netcreate_num_params.c, -DVMW_NETCREATE_KERNARG, )
|
||||
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
diff --git a/vmblock-only/Makefile b/vmblock-only/Makefile
|
||||
index 2b81323..746c8b8 100644
|
||||
--- a/vmblock-only/Makefile
|
||||
+++ b/vmblock-only/Makefile
|
||||
@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r)
|
||||
ifdef LINUXINCLUDE
|
||||
HEADER_DIR = $(LINUXINCLUDE)
|
||||
else
|
||||
-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include
|
||||
+HEADER_DIR = $(KERNEL_DIR)
|
||||
endif
|
||||
|
||||
-BUILD_DIR = $(HEADER_DIR)/..
|
||||
+BUILD_DIR = $(KBUILD_OUTPUT)
|
||||
|
||||
DRIVER := vmblock
|
||||
PRODUCT := ws
|
||||
diff --git a/vmci-only/Makefile b/vmci-only/Makefile
|
||||
index 8e9c5be..6ec828b 100644
|
||||
--- a/vmci-only/Makefile
|
||||
+++ b/vmci-only/Makefile
|
||||
@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r)
|
||||
ifdef LINUXINCLUDE
|
||||
HEADER_DIR = $(LINUXINCLUDE)
|
||||
else
|
||||
-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include
|
||||
+HEADER_DIR = $(KERNEL_DIR)
|
||||
endif
|
||||
|
||||
-BUILD_DIR = $(HEADER_DIR)/..
|
||||
+BUILD_DIR = $(KBUILD_OUTPUT)
|
||||
|
||||
DRIVER := vmci
|
||||
PRODUCT := ws
|
||||
diff --git a/vmmon-only/Makefile b/vmmon-only/Makefile
|
||||
index 5bd867b..91a83d4 100644
|
||||
--- a/vmmon-only/Makefile
|
||||
+++ b/vmmon-only/Makefile
|
||||
@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r)
|
||||
ifdef LINUXINCLUDE
|
||||
HEADER_DIR = $(LINUXINCLUDE)
|
||||
else
|
||||
-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include
|
||||
+HEADER_DIR = $(KERNEL_DIR)
|
||||
endif
|
||||
|
||||
-BUILD_DIR = $(HEADER_DIR)/..
|
||||
+BUILD_DIR = $(KBUILD_OUTPUT)
|
||||
|
||||
DRIVER := vmmon
|
||||
PRODUCT := @@PRODUCT@@
|
||||
diff --git a/vmnet-only/Makefile b/vmnet-only/Makefile
|
||||
index d4eb73c..c7c6d38 100644
|
||||
--- a/vmnet-only/Makefile
|
||||
+++ b/vmnet-only/Makefile
|
||||
@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r)
|
||||
ifdef LINUXINCLUDE
|
||||
HEADER_DIR = $(LINUXINCLUDE)
|
||||
else
|
||||
-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include
|
||||
+HEADER_DIR = $(KERNEL_DIR)
|
||||
endif
|
||||
|
||||
-BUILD_DIR = $(HEADER_DIR)/..
|
||||
+BUILD_DIR = $(KBUILD_OUTPUT)
|
||||
|
||||
DRIVER := vmnet
|
||||
PRODUCT := @@PRODUCT@@
|
||||
diff --git a/vsock-only/Makefile b/vsock-only/Makefile
|
||||
index 93dd61d..9765696 100644
|
||||
--- a/vsock-only/Makefile
|
||||
+++ b/vsock-only/Makefile
|
||||
@@ -49,10 +49,10 @@ VM_UNAME = $(shell uname -r)
|
||||
ifdef LINUXINCLUDE
|
||||
HEADER_DIR = $(LINUXINCLUDE)
|
||||
else
|
||||
-HEADER_DIR = /lib/modules/$(VM_UNAME)/build/include
|
||||
+HEADER_DIR = $(KERNEL_DIR)
|
||||
endif
|
||||
|
||||
-BUILD_DIR = $(HEADER_DIR)/..
|
||||
+BUILD_DIR = $(KBUILD_OUTPUT)
|
||||
|
||||
DRIVER := vsock
|
||||
PRODUCT := ws
|
||||
24
app-emulation/vmware-modules/files/279-netdevice.patch
Normal file
24
app-emulation/vmware-modules/files/279-netdevice.patch
Normal file
@@ -0,0 +1,24 @@
|
||||
diff --git a/vmnet-only/compat_netdevice.h b/vmnet-only/compat_netdevice.h
|
||||
index 7a56304..9ff4548 100644
|
||||
--- a/vmnet-only/compat_netdevice.h
|
||||
+++ b/vmnet-only/compat_netdevice.h
|
||||
@@ -47,6 +47,19 @@
|
||||
# define net_device device
|
||||
#endif
|
||||
|
||||
+/* it looks like these have been removed from the kernel 3.1
|
||||
+ * probably because the "transition" is considered complete.
|
||||
+ * so to keep this source compatible we just redefine them like they were
|
||||
+ * previously
|
||||
+ */
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)
|
||||
+#define HAVE_ALLOC_NETDEV /* feature macro: alloc_xxxdev
|
||||
+ functions are available. */
|
||||
+#define HAVE_FREE_NETDEV /* free_netdev() */
|
||||
+#define HAVE_NETDEV_PRIV /* netdev_priv() */
|
||||
+#define HAVE_NETIF_QUEUE
|
||||
+#define HAVE_NET_DEVICE_OPS
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* SET_MODULE_OWNER appeared sometime during 2.3.x. It was setting
|
||||
13
app-emulation/vmware-modules/files/279-putname.patch
Normal file
13
app-emulation/vmware-modules/files/279-putname.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/vmblock-only/linux/control.c b/vmblock-only/linux/control.c
|
||||
index 79716bd..2dd83fe 100644
|
||||
--- a/vmblock-only/linux/control.c
|
||||
+++ b/vmblock-only/linux/control.c
|
||||
@@ -293,7 +293,7 @@ ExecuteBlockOp(const char __user *buf, // IN: buffer with name
|
||||
|
||||
retval = i < 0 ? -EINVAL : blockOp(name, blocker);
|
||||
|
||||
- putname(name);
|
||||
+ __putname(name);
|
||||
|
||||
return retval;
|
||||
}
|
||||
37
app-emulation/vmware-modules/files/279-userns.patch
Normal file
37
app-emulation/vmware-modules/files/279-userns.patch
Normal file
@@ -0,0 +1,37 @@
|
||||
--- a/vmblock-only/linux/inode.c 2013-03-20 17:37:48.000000000 +0100
|
||||
+++ b/vmblock-only/linux/inode.c 2013-03-20 17:41:22.000000000 +0100
|
||||
@@ -135,7 +135,8 @@
|
||||
inode->i_size = INODE_TO_IINFO(inode)->nameLen;
|
||||
inode->i_version = 1;
|
||||
inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
|
||||
- inode->i_uid = inode->i_gid = 0;
|
||||
+ inode->i_uid = GLOBAL_ROOT_UID;
|
||||
+ inode->i_gid = GLOBAL_ROOT_GID;
|
||||
inode->i_op = &LinkInodeOps;
|
||||
|
||||
d_add(dentry, inode);
|
||||
|
||||
--- a/vmci-only/linux/driver.c 2013-03-20 17:57:35.000000000 +0100
|
||||
+++ b/vmci-only/linux/driver.c 2013-03-20 17:57:43.000000000 +0100
|
||||
@@ -740,7 +740,7 @@
|
||||
goto init_release;
|
||||
}
|
||||
|
||||
- user = current_uid();
|
||||
+ user = from_kuid(current_user_ns(), current_uid());
|
||||
retval = VMCIContext_InitContext(initBlock.cid, initBlock.flags,
|
||||
0 /* Unused */, vmciLinux->userVersion,
|
||||
&user, &vmciLinux->context);
|
||||
|
||||
--- a/vsock-only/linux/af_vsock.c 2013-03-20 18:01:48.000000000 +0100
|
||||
+++ b/vsock-only/linux/af_vsock.c 2013-03-20 18:01:58.000000000 +0100
|
||||
@@ -2866,7 +2866,7 @@
|
||||
vsk->connectTimeout = psk->connectTimeout;
|
||||
} else {
|
||||
vsk->trusted = capable(CAP_NET_ADMIN);
|
||||
- vsk->owner = current_uid();
|
||||
+ vsk->owner = from_kuid(current_user_ns(), current_uid());
|
||||
vsk->queuePairSize = VSOCK_DEFAULT_QP_SIZE;
|
||||
vsk->queuePairMinSize = VSOCK_DEFAULT_QP_SIZE_MIN;
|
||||
vsk->queuePairMaxSize = VSOCK_DEFAULT_QP_SIZE_MAX;
|
||||
|
||||
89
app-emulation/vmware-modules/files/279-vmblock-3.11.patch
Normal file
89
app-emulation/vmware-modules/files/279-vmblock-3.11.patch
Normal file
@@ -0,0 +1,89 @@
|
||||
--- a/vmblock-only/linux/file.c
|
||||
+++ b/vmblock-only/linux/file.c
|
||||
@@ -38,46 +38,6 @@ typedef u64 inode_num_t;
|
||||
typedef ino_t inode_num_t;
|
||||
#endif
|
||||
|
||||
-/* Specifically for our filldir_t callback */
|
||||
-typedef struct FilldirInfo {
|
||||
- filldir_t filldir;
|
||||
- void *dirent;
|
||||
-} FilldirInfo;
|
||||
-
|
||||
-
|
||||
-/*
|
||||
- *----------------------------------------------------------------------------
|
||||
- *
|
||||
- * Filldir --
|
||||
- *
|
||||
- * Callback function for readdir that we use in place of the one provided.
|
||||
- * This allows us to specify that each dentry is a symlink, but pass through
|
||||
- * everything else to the original filldir function.
|
||||
- *
|
||||
- * Results:
|
||||
- * Original filldir's return value.
|
||||
- *
|
||||
- * Side effects:
|
||||
- * Directory information gets copied to user's buffer.
|
||||
- *
|
||||
- *----------------------------------------------------------------------------
|
||||
- */
|
||||
-
|
||||
-static int
|
||||
-Filldir(void *buf, // IN: Dirent buffer passed from FileOpReaddir
|
||||
- const char *name, // IN: Dirent name
|
||||
- int namelen, // IN: len of dirent's name
|
||||
- loff_t offset, // IN: Offset
|
||||
- inode_num_t ino, // IN: Inode number of dirent
|
||||
- unsigned int d_type) // IN: Type of file
|
||||
-{
|
||||
- FilldirInfo *info = buf;
|
||||
-
|
||||
- /* Specify DT_LNK regardless */
|
||||
- return info->filldir(info->dirent, name, namelen, offset, ino, DT_LNK);
|
||||
-}
|
||||
-
|
||||
-
|
||||
/* File operations */
|
||||
|
||||
/*
|
||||
@@ -166,11 +126,10 @@ FileOpOpen(struct inode *inode, // IN
|
||||
|
||||
static int
|
||||
FileOpReaddir(struct file *file, // IN
|
||||
- void *dirent, // IN
|
||||
- filldir_t filldir) // IN
|
||||
+ struct dir_context *ctx) // IN
|
||||
{
|
||||
int ret;
|
||||
- FilldirInfo info;
|
||||
+
|
||||
struct file *actualFile;
|
||||
|
||||
if (!file) {
|
||||
@@ -184,12 +143,10 @@ FileOpReaddir(struct file *file, // IN
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- info.filldir = filldir;
|
||||
- info.dirent = dirent;
|
||||
-
|
||||
- actualFile->f_pos = file->f_pos;
|
||||
- ret = vfs_readdir(actualFile, Filldir, &info);
|
||||
- file->f_pos = actualFile->f_pos;
|
||||
+ /* Ricky Wong Yung Fei:
|
||||
+ * Manipulation of pos is now handled internally by iterate_dir().
|
||||
+ */
|
||||
+ ret = iterate_dir(actualFile, ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -237,7 +194,7 @@ FileOpRelease(struct inode *inode, // IN
|
||||
|
||||
|
||||
struct file_operations RootFileOps = {
|
||||
- .readdir = FileOpReaddir,
|
||||
+ .iterate = FileOpReaddir,
|
||||
.open = FileOpOpen,
|
||||
.release = FileOpRelease,
|
||||
};
|
||||
79
app-emulation/vmware-modules/files/279-vmblock-3.12.patch
Normal file
79
app-emulation/vmware-modules/files/279-vmblock-3.12.patch
Normal file
@@ -0,0 +1,79 @@
|
||||
--- a/vmblock-only/linux/control.c 2013-10-03 04:29:47.471339204 -0400
|
||||
+++ b/vmblock-only/linux/control.c 2013-10-03 04:31:56.607334636 -0400
|
||||
@@ -283,7 +283,7 @@
|
||||
int i;
|
||||
int retval;
|
||||
|
||||
- name = getname(buf);
|
||||
+ name = __getname();
|
||||
if (IS_ERR(name)) {
|
||||
return PTR_ERR(name);
|
||||
}
|
||||
|
||||
+ i = strncpy_from_user(name, buf, PATH_MAX);
|
||||
+ if (i < 0 || i == PATH_MAX) {
|
||||
+ __putname(name);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) {
|
||||
name[i] = '\0';
|
||||
}
|
||||
--- a/vmblock-only/linux/dentry.c 2013-10-03 04:29:47.471339204 -0400
|
||||
+++ b/vmblock-only/linux/dentry.c 2013-10-03 04:31:56.607334636 -0400
|
||||
@@ -32,7 +32,7 @@
|
||||
#include "block.h"
|
||||
|
||||
|
||||
-static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd);
|
||||
+static int DentryOpRevalidate(struct dentry *dentry, unsigned int flags);
|
||||
|
||||
struct dentry_operations LinkDentryOps = {
|
||||
.d_revalidate = DentryOpRevalidate,
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
static int
|
||||
DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating
|
||||
- struct nameidata *nd) // IN: lookup flags & intent
|
||||
+ unsigned int flags) // IN: lookup flags & intent
|
||||
{
|
||||
VMBlockInodeInfo *iinfo;
|
||||
struct nameidata actualNd;
|
||||
@@ -101,7 +101,7 @@
|
||||
if (actualDentry &&
|
||||
actualDentry->d_op &&
|
||||
actualDentry->d_op->d_revalidate) {
|
||||
- return actualDentry->d_op->d_revalidate(actualDentry, nd);
|
||||
+ return actualDentry->d_op->d_revalidate(actualDentry, flags);
|
||||
}
|
||||
|
||||
if (compat_path_lookup(iinfo->name, 0, &actualNd)) {
|
||||
--- a/vmblock-only/linux/inode.c 2013-10-03 04:29:47.471339204 -0400
|
||||
+++ b/vmblock-only/linux/inode.c 2013-10-03 04:31:56.607334636 -0400
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
/* Inode operations */
|
||||
static struct dentry *InodeOpLookup(struct inode *dir,
|
||||
- struct dentry *dentry, struct nameidata *nd);
|
||||
+ struct dentry *dentry, unsigned int flags);
|
||||
static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen);
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
|
||||
static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd);
|
||||
@@ -75,7 +75,7 @@
|
||||
static struct dentry *
|
||||
InodeOpLookup(struct inode *dir, // IN: parent directory's inode
|
||||
struct dentry *dentry, // IN: dentry to lookup
|
||||
- struct nameidata *nd) // IN: lookup intent and information
|
||||
+ unsigned int flags) // IN: lookup intent and information
|
||||
{
|
||||
char *filename;
|
||||
struct inode *inode;
|
||||
@@ -221,7 +221,7 @@
|
||||
goto out;
|
||||
}
|
||||
|
||||
- ret = vfs_follow_link(nd, iinfo->name);
|
||||
+ nd_set_link(nd, iinfo->name);
|
||||
|
||||
out:
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
|
||||
23
app-emulation/vmware-modules/files/279-vmblock.patch
Normal file
23
app-emulation/vmware-modules/files/279-vmblock.patch
Normal file
@@ -0,0 +1,23 @@
|
||||
diff -ruN work.orig/vmblock-only/linux/control.c work/vmblock-only/linux/control.c
|
||||
--- work.orig/vmblock-only/linux/control.c 2013-11-02 18:05:39.960226399 +0100
|
||||
+++ work/vmblock-only/linux/control.c 2013-11-02 18:09:11.760231432 +0100
|
||||
@@ -208,17 +208,14 @@
|
||||
VMBlockSetProcEntryOwner(controlProcMountpoint);
|
||||
|
||||
/* Create /proc/fs/vmblock/dev */
|
||||
- controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME,
|
||||
- VMBLOCK_CONTROL_MODE,
|
||||
- controlProcDirEntry);
|
||||
- if (!controlProcEntry) {
|
||||
+ controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, VMBLOCK_CONTROL_MODE, controlProcDirEntry, &ControlFileOps);
|
||||
+ if (controlProcEntry == NULL) {
|
||||
Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n");
|
||||
remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry);
|
||||
remove_proc_entry(VMBLOCK_CONTROL_PROC_DIRNAME, NULL);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- controlProcEntry->proc_fops = &ControlFileOps;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user