summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas K. Hüttel <dilfridge@gentoo.org>2016-02-09 00:20:59 +0100
committerAndreas K. Hüttel <dilfridge@gentoo.org>2016-02-09 00:21:20 +0100
commitbf1be07d2a1d9643f2668583694d4a84011bc529 (patch)
tree18df467248abaa84fb59407c281f26f20c74b294 /app-emulation/vmware-modules
parentnet-wireless/wireless-regdb: bump to latest, we keep you legal (diff)
downloadgentoo-bf1be07d2a1d9643f2668583694d4a84011bc529.tar.gz
gentoo-bf1be07d2a1d9643f2668583694d4a84011bc529.tar.bz2
gentoo-bf1be07d2a1d9643f2668583694d4a84011bc529.zip
app-emulation/vmware-modules: Add patches for compilation with Kernel 4.2, bug 561252
Patches prepared by Ognian Tenchev, original source https://communities.vmware.com/thread/517279 Package-Manager: portage-2.2.27
Diffstat (limited to 'app-emulation/vmware-modules')
-rw-r--r--app-emulation/vmware-modules/files/304-4.2-01-inode.patch46
-rw-r--r--app-emulation/vmware-modules/files/304-4.2-02-vmnetInt.patch23
-rw-r--r--app-emulation/vmware-modules/files/304-4.2-03-af_vsock.patch13
-rw-r--r--app-emulation/vmware-modules/files/304-4.2-04-driver.patch50
-rw-r--r--app-emulation/vmware-modules/vmware-modules-304.2.ebuild4
5 files changed, 136 insertions, 0 deletions
diff --git a/app-emulation/vmware-modules/files/304-4.2-01-inode.patch b/app-emulation/vmware-modules/files/304-4.2-01-inode.patch
new file mode 100644
index 000000000000..35a275bf3367
--- /dev/null
+++ b/app-emulation/vmware-modules/files/304-4.2-01-inode.patch
@@ -0,0 +1,46 @@
+--- vmblock-only/linux/inode.c.orig 2015-09-28 01:11:08.000000000 +0300
++++ vmblock-only/linux/inode.c 2015-09-28 01:14:32.318043465 +0300
+@@ -44,7 +44,9 @@
+ static int InodeOpReadlink(struct dentry *, char __user *, int);
+ #endif
+
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
++static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie);
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
+ static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd);
+ #else
+ static int InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd);
+@@ -221,13 +223,15 @@
+ *----------------------------------------------------------------------------
+ */
+
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
+-static void *
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
++static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie)
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
++static void * InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink
++ struct nameidata *nd) // OUT: stores result
+ #else
+-static int
+-#endif
+-InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink
++static int InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink
+ struct nameidata *nd) // OUT: stores result
++#endif
+ {
+ int ret;
+ VMBlockInodeInfo *iinfo;
+@@ -244,7 +248,11 @@
+ goto out;
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
++ return *cookie = (char *)(iinfo->name);
++#else
+ nd_set_link(nd, iinfo->name);
++#endif
+
+ out:
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
diff --git a/app-emulation/vmware-modules/files/304-4.2-02-vmnetInt.patch b/app-emulation/vmware-modules/files/304-4.2-02-vmnetInt.patch
new file mode 100644
index 000000000000..11c76d0423e3
--- /dev/null
+++ b/app-emulation/vmware-modules/files/304-4.2-02-vmnetInt.patch
@@ -0,0 +1,23 @@
+--- vmnet-only/vmnetInt.h.orig 2015-05-31 16:40:39.000000000 +0300
++++ vmnet-only/vmnetInt.h 2015-09-28 01:22:01.553054142 +0300
+@@ -78,12 +78,16 @@
+
+ extern struct proto vmnet_proto;
+ #ifdef VMW_NETDEV_HAS_NET
+-# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
+- PF_NETLINK, _pri, &vmnet_proto)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
++# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
++ PF_NETLINK, _pri, &vmnet_proto, 1)
+ #else
+-# define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1)
++# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
++ PF_NETLINK, _pri, &vmnet_proto)
++#endif
++#else
++# define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1)
+ #endif
+-
+
+ #ifdef NF_IP_LOCAL_IN
+ #define VMW_NF_INET_LOCAL_IN NF_IP_LOCAL_IN
diff --git a/app-emulation/vmware-modules/files/304-4.2-03-af_vsock.patch b/app-emulation/vmware-modules/files/304-4.2-03-af_vsock.patch
new file mode 100644
index 000000000000..6155df425972
--- /dev/null
+++ b/app-emulation/vmware-modules/files/304-4.2-03-af_vsock.patch
@@ -0,0 +1,13 @@
+--- vsock-only/linux/af_vsock.c.orig 2015-09-28 01:26:51.354061029 +0300
++++ vsock-only/linux/af_vsock.c 2015-09-28 01:25:11.196058649 +0300
+@@ -2826,7 +2826,9 @@
+ * network namespace, and the option to zero the sock was dropped.
+ *
+ */
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
++ sk = sk_alloc(net, vsockVmciFamilyOps.family, priority, &vsockVmciProto, 1);
++#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12)
+ sk = sk_alloc(vsockVmciFamilyOps.family, priority,
+ vsockVmciProto.slab_obj_size, vsockVmciProto.slab);
+ #elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24)
diff --git a/app-emulation/vmware-modules/files/304-4.2-04-driver.patch b/app-emulation/vmware-modules/files/304-4.2-04-driver.patch
new file mode 100644
index 000000000000..237aa2297a3a
--- /dev/null
+++ b/app-emulation/vmware-modules/files/304-4.2-04-driver.patch
@@ -0,0 +1,50 @@
+--- vmci-only/linux/driver.c.orig 2015-09-28 01:33:04.416069896 +0300
++++ vmci-only/linux/driver.c 2015-09-28 01:34:32.814071997 +0300
+@@ -26,6 +26,7 @@
+
+ #include <linux/file.h>
+ #include <linux/fs.h>
++#include <linux/vmalloc.h>
+ #include <linux/init.h>
+ #if defined(__x86_64__) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12)
+ # include <linux/ioctl32.h>
+@@ -713,7 +714,7 @@
+
+ case IOCTL_VMCI_INIT_CONTEXT: {
+ VMCIInitBlock initBlock;
+- VMCIHostUser user;
++ uid_t user;
+
+ retval = copy_from_user(&initBlock, (void *)ioarg, sizeof initBlock);
+ if (retval != 0) {
+@@ -736,7 +736,11 @@
+ goto init_release;
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
+ user = current_uid();
++#else
++ user = from_kuid(&init_user_ns, current_uid());
++#endif
+ retval = VMCIContext_InitContext(initBlock.cid, initBlock.flags,
+ 0 /* Unused */, vmciLinux->userVersion,
+ &user, &vmciLinux->context);
+
+@@ -1683,7 +1684,7 @@
+ /* This should be last to make sure we are done initializing. */
+ retval = pci_register_driver(&vmci_driver);
+ if (retval < 0) {
+- vfree(data_buffer);
++ kvfree(data_buffer);
+ data_buffer = NULL;
+ return retval;
+ }
+@@ -2470,7 +2471,7 @@
+
+ if (guestDeviceInit) {
+ pci_unregister_driver(&vmci_driver);
+- vfree(data_buffer);
++ kvfree(data_buffer);
+ guestDeviceInit = FALSE;
+ }
+
diff --git a/app-emulation/vmware-modules/vmware-modules-304.2.ebuild b/app-emulation/vmware-modules/vmware-modules-304.2.ebuild
index 173592f145e5..cab32841e4fa 100644
--- a/app-emulation/vmware-modules/vmware-modules-304.2.ebuild
+++ b/app-emulation/vmware-modules/vmware-modules-304.2.ebuild
@@ -95,6 +95,10 @@ src_prepare() {
kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-05-vmci_qpair.patch"
kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-06-vsock.patch"
kernel_is ge 3 19 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.19-07-vsock.patch"
+ kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-01-inode.patch"
+ kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-02-vmnetInt.patch"
+ kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-03-af_vsock.patch"
+ kernel_is ge 4 2 0 && epatch "${FILESDIR}/${PV_MAJOR}-4.2-04-driver.patch"
# Allow user patches so they can support RC kernels and whatever else
epatch_user