summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-emulation/vmware-modules/files/279-3.12.0.patch')
-rw-r--r--app-emulation/vmware-modules/files/279-3.12.0.patch152
1 files changed, 152 insertions, 0 deletions
diff --git a/app-emulation/vmware-modules/files/279-3.12.0.patch b/app-emulation/vmware-modules/files/279-3.12.0.patch
new file mode 100644
index 0000000..7c14481
--- /dev/null
+++ b/app-emulation/vmware-modules/files/279-3.12.0.patch
@@ -0,0 +1,152 @@
+diff -rpNu vmblock-only.orig/linux/control.c vmblock-only/linux/control.c
+--- vmblock-only.orig/linux/control.c 2014-01-16 00:09:12.000949255 -0800
++++ vmblock-only/linux/control.c 2014-01-16 00:10:46.916483268 -0800
+@@ -279,7 +279,7 @@ ExecuteBlockOp(const char __user *buf,
+ int i;
+ int retval;
+
+- name = getname(buf);
++ name = (char*) getname(buf)->name;
+ if (IS_ERR(name)) {
+ return PTR_ERR(name);
+ }
+diff -rpNu vmblock-only.orig/linux/dentry.c vmblock-only/linux/dentry.c
+--- vmblock-only.orig/linux/dentry.c 2013-10-18 10:56:11.000000000 -0700
++++ vmblock-only/linux/dentry.c 2014-01-16 00:10:46.916483268 -0800
+@@ -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 @@ struct dentry_operations LinkDentryOps =
+
+ 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 @@ DentryOpRevalidate(struct dentry *dentry
+ 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)) {
+diff -rpNu vmblock-only.orig/linux/inode.c vmblock-only/linux/inode.c
+--- vmblock-only.orig/linux/inode.c 2014-01-16 00:10:15.046625108 -0800
++++ vmblock-only/linux/inode.c 2014-01-16 00:10:46.916483268 -0800
+@@ -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 inode_operations LinkInode
+ 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;
+@@ -135,7 +135,8 @@ InodeOpLookup(struct inode *dir, //
+ 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;
++ i_uid_write(inode, 0);
++ i_gid_write(inode, 0);
+ inode->i_op = &LinkInodeOps;
+
+ d_add(dentry, inode);
+@@ -221,7 +222,7 @@ InodeOpFollowlink(struct dentry *dentry,
+ 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)
+diff -rpNu vmci-only.orig/linux/driver.c vmci-only/linux/driver.c
+--- vmci-only.orig/linux/driver.c 2013-10-18 10:56:11.000000000 -0700
++++ vmci-only/linux/driver.c 2014-01-08 10:41:27.000000000 -0800
+@@ -51,6 +51,7 @@ sys_ioctl(unsigned int fd, unsigned int
+ #include "compat_slab.h"
+ #include "compat_uaccess.h"
+ #include "compat_version.h"
++#include "compat_cred.h"
+
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 9)
+ # error "Linux kernels before 2.6.9 are not supported."
+@@ -737,7 +738,7 @@ LinuxDriver_Ioctl(struct inode *inode,
+ goto init_release;
+ }
+
+- user = current_uid();
++ user = CURRENT_UID();
+ retval = VMCIContext_InitContext(initBlock.cid, initBlock.flags,
+ 0 /* Unused */, vmciLinux->userVersion,
+ &user, &vmciLinux->context);
+diff -rpNu vmci-only.orig/shared/compat_cred.h vmci-only/shared/compat_cred.h
+--- vmci-only.orig/shared/compat_cred.h 2013-10-18 10:56:11.000000000 -0700
++++ vmci-only/shared/compat_cred.h 2014-01-08 10:39:22.000000000 -0800
+@@ -35,6 +35,14 @@
+ #define current_fsgid() (current->fsgid)
+ #endif
+
++#ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS
++#define CURRENT_UID() (__kuid_val(current_uid()))
++#define CURRENT_GID() (__kgid_val(current_gid()))
++#else
++#define CURRENT_UID() (current_uid())
++#define CURRENT_GID() (current_gid())
++#endif
++
+ #if !defined(cap_set_full)
+ /* cap_set_full was removed in kernel version 3.0-rc4. */
+ #define cap_set_full(_c) do { (_c) = CAP_FULL_SET; } while (0)
+diff -rpNu vsock-only.orig/shared/compat_cred.h vsock-only/shared/compat_cred.h
+--- vsock-only.orig/shared/compat_cred.h 2013-10-18 10:56:11.000000000 -0700
++++ vsock-only/shared/compat_cred.h 2014-01-08 10:39:22.000000000 -0800
+@@ -35,6 +35,14 @@
+ #define current_fsgid() (current->fsgid)
+ #endif
+
++#ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS
++#define CURRENT_UID() (__kuid_val(current_uid()))
++#define CURRENT_GID() (__kgid_val(current_gid()))
++#else
++#define CURRENT_UID() (current_uid())
++#define CURRENT_GID() (current_gid())
++#endif
++
+ #if !defined(cap_set_full)
+ /* cap_set_full was removed in kernel version 3.0-rc4. */
+ #define cap_set_full(_c) do { (_c) = CAP_FULL_SET; } while (0)
+
+
+diff -urpN vsock-only.orig/linux/af_vsock.c vsock-only/linux/af_vsock.c
+--- vsock-only.orig/linux/af_vsock.c 2013-10-18 10:56:12.000000000 -0700
++++ vsock-only/linux/af_vsock.c 2014-01-16 12:21:34.594978553 -0800
+@@ -2869,7 +2869,7 @@ __VSockVmciCreate(struct net *net,
+ vsk->connectTimeout = psk->connectTimeout;
+ } else {
+ vsk->trusted = capable(CAP_NET_ADMIN);
+- vsk->owner = current_uid();
++ vsk->owner = CURRENT_UID();
+ vsk->queuePairSize = VSOCK_DEFAULT_QP_SIZE;
+ vsk->queuePairMinSize = VSOCK_DEFAULT_QP_SIZE_MIN;
+ vsk->queuePairMaxSize = VSOCK_DEFAULT_QP_SIZE_MAX;