From 9018fe0505b59d800f5c56480b2954baa7fe85d3 Mon Sep 17 00:00:00 2001 From: Justin Riley Date: Thu, 29 May 2014 12:42:06 -0400 Subject: vmware-modules: use ebuild from gmt overlay (3.14.x support) --- app-emulation/vmware-modules/ChangeLog | 67 ++++----- .../vmware-modules/files/279-3.11.0.patch | 91 ++++++++++++ .../vmware-modules/files/279-3.12.0.patch | 152 +++++++++++++++++++ .../vmware-modules/files/279-3.14.0.patch | 161 +++++++++++++++++++++ .../files/279-inline-correctly.patch | 12 ++ .../vmware-modules/files/279-userns.patch | 37 ----- .../vmware-modules/files/279-vmblock-3.11.patch | 89 ------------ .../vmware-modules/files/279-vmblock-3.12.patch | 69 --------- .../vmware-modules/vmware-modules-279.2-r1.ebuild | 123 ++++++++++++++++ .../vmware-modules/vmware-modules-279.2.ebuild | 102 ------------- 10 files changed, 564 insertions(+), 339 deletions(-) create mode 100644 app-emulation/vmware-modules/files/279-3.11.0.patch create mode 100644 app-emulation/vmware-modules/files/279-3.12.0.patch create mode 100644 app-emulation/vmware-modules/files/279-3.14.0.patch create mode 100644 app-emulation/vmware-modules/files/279-inline-correctly.patch delete mode 100644 app-emulation/vmware-modules/files/279-userns.patch delete mode 100644 app-emulation/vmware-modules/files/279-vmblock-3.11.patch delete mode 100644 app-emulation/vmware-modules/files/279-vmblock-3.12.patch create mode 100644 app-emulation/vmware-modules/vmware-modules-279.2-r1.ebuild delete mode 100644 app-emulation/vmware-modules/vmware-modules-279.2.ebuild diff --git a/app-emulation/vmware-modules/ChangeLog b/app-emulation/vmware-modules/ChangeLog index d06c985..3adfebd 100644 --- a/app-emulation/vmware-modules/ChangeLog +++ b/app-emulation/vmware-modules/ChangeLog @@ -1,46 +1,29 @@ # ChangeLog for app-emulation/vmware-modules -# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-emulation/vmware-modules/ChangeLog,v 1.114 2013/12/27 16:34:13 dilfridge Exp $ - - 27 Dec 2013; Andreas K. Huettel - +files/264-newline.patch, vmware-modules-264.5.ebuild: - Add cosmetic patch for bug 439280 - - 23 Nov 2013; Magnus Granberg vmware-modules-279.0.ebuild, - vmware-modules-279.1.ebuild, +files/279-hardened.patch: - Update hardned patch for 279.X #491342 - -*vmware-modules-279.1 (06 Nov 2013) - - 06 Nov 2013; Andreas K. Huettel - +vmware-modules-279.1.ebuild: - Version bump - - 02 Nov 2013; Andreas K. Huettel - -files/279-3.10.0.patch, vmware-modules-279.0.ebuild: - Re-add keywords after testing - - 02 Nov 2013; Andreas K. Huettel - files/279-vmblock.patch, vmware-modules-279.0.ebuild: - Apply proper patches. Tested with 3.10.7-gentoo-r1. - - 22 Oct 2013; Andreas K. Huettel - -files/238-2.6.39.patch, -files/238-makefile-kernel-dir.patch, - -files/238-3.2.0.patch, -files/238-d-make-root.patch, - -files/238-jobserver.patch, -files/238-makefile-include.patch, - -files/238-netdevice.patch, -files/238-sema.patch, - -files/238-unlocked_ioctl.patch, -vmware-modules-238.6.ebuild: - Drop old - -*vmware-modules-279.0 (19 Oct 2013) - - 19 Oct 2013; Andreas K. Huettel - +files/279-3.10.0.patch, +files/279-apic.patch, - +files/279-makefile-include.patch, +files/279-makefile-kernel-dir.patch, - +files/279-netdevice.patch, +files/279-putname.patch, - +files/279-vmblock.patch, +vmware-modules-279.0.ebuild: - Version bump, added without keywords for testing. Bug 484098. Thanks to Billy - DeVincentis for the files. +# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2 +# $Header: $ + + 06 May 2014; Gregory M. Turner + vmware-modules-279.2-r1.ebuild: + Don't let portage dink around with the kernel module binaries. + + 06 May 2014; Gregory M. Turner + vmware-modules-279.2-r1.ebuild: + Verbose building + + 06 May 2014; Gregory M. Turner + vmware-modules-279.2-r1.ebuild: + Implement ultra-nazi flag stripping to protect users from themselves + (even though it really seems linux-mod.eclass should be doing it for us). + + 06 May 2014; Gregory M. Turner + vmware-modules-279.2-r1.ebuild: + Update udev entries with correct quoting as required by recent udevd. + + 16 Jan 2014; Greg Turner + +vmware-modules-279.1-r1.ebuild, +files/279-3.11.0.patch, + +files/279-3.12.0.patch, +files/279-vnet-gcc48.patch: + Add contributed and homebrew patches for kernels 3.11.0 and 3.12.0, + plus some gcc-4.8 compatibility fixes, bug 488072 11 Aug 2013; Andreas K. Huettel +files/264-3.10.0.patch, +files/271-3.10.0.patch, diff --git a/app-emulation/vmware-modules/files/279-3.11.0.patch b/app-emulation/vmware-modules/files/279-3.11.0.patch new file mode 100644 index 0000000..3b5b086 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.11.0.patch @@ -0,0 +1,91 @@ +diff --git a/linux/file.c b/linux/file.c +index d7ac1f6..5499169 100644 +--- 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, + }; 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; diff --git a/app-emulation/vmware-modules/files/279-3.14.0.patch b/app-emulation/vmware-modules/files/279-3.14.0.patch new file mode 100644 index 0000000..f7fd9ba --- /dev/null +++ b/app-emulation/vmware-modules/files/279-3.14.0.patch @@ -0,0 +1,161 @@ +diff -urpN work.orig/vmblock-only/shared/vm_assert.h work/vmblock-only/shared/vm_assert.h +--- work.orig/vmblock-only/shared/vm_assert.h 2014-04-14 14:41:41.000000000 -0700 ++++ work/vmblock-only/shared/vm_assert.h 2014-05-10 18:33:30.113514073 -0700 +@@ -251,12 +251,12 @@ void WarningThrottled(uint32 *count, con + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL +- #define DEPRECATED(_fix) DO_ONCE( \ ++ #define VMWARE_DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED. %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else +- #define DEPRECATED(_fix) do {} while (0) ++ #define VMWARE_DEPRECATED(_fix) do {} while (0) + #endif + + +diff -urpN work.orig/vmci-only/shared/vm_assert.h work/vmci-only/shared/vm_assert.h +--- work.orig/vmci-only/shared/vm_assert.h 2014-04-14 14:41:41.000000000 -0700 ++++ work/vmci-only/shared/vm_assert.h 2014-05-10 18:31:23.811773455 -0700 +@@ -251,12 +251,12 @@ void WarningThrottled(uint32 *count, con + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL +- #define DEPRECATED(_fix) DO_ONCE( \ ++ #define VMWARE_DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED. %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else +- #define DEPRECATED(_fix) do {} while (0) ++ #define VMWARE_DEPRECATED(_fix) do {} while (0) + #endif + + +diff -urpN work.orig/vmmon-only/include/vm_assert.h work/vmmon-only/include/vm_assert.h +--- work.orig/vmmon-only/include/vm_assert.h 2014-04-14 17:06:20.000000000 -0700 ++++ work/vmmon-only/include/vm_assert.h 2014-05-10 18:32:38.682026876 -0700 +@@ -251,12 +251,12 @@ void WarningThrottled(uint32 *count, con + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL +- #define DEPRECATED(_fix) DO_ONCE( \ ++ #define VMWARE_DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED. %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else +- #define DEPRECATED(_fix) do {} while (0) ++ #define VMWARE_DEPRECATED(_fix) do {} while (0) + #endif + + +diff -urpN work.orig/vmnet-only/vm_assert.h work/vmnet-only/vm_assert.h +--- work.orig/vmnet-only/vm_assert.h 2014-04-14 17:06:21.000000000 -0700 ++++ work/vmnet-only/vm_assert.h 2014-05-10 18:31:50.192510386 -0700 +@@ -251,12 +251,12 @@ void WarningThrottled(uint32 *count, con + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL +- #define DEPRECATED(_fix) DO_ONCE( \ ++ #define VMWARE_DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED. %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else +- #define DEPRECATED(_fix) do {} while (0) ++ #define VMWARE_DEPRECATED(_fix) do {} while (0) + #endif + + +diff -urpN work.orig/vsock-only/shared/vm_assert.h work/vsock-only/shared/vm_assert.h +--- work.orig/vsock-only/shared/vm_assert.h 2014-04-14 14:41:41.000000000 -0700 ++++ work/vsock-only/shared/vm_assert.h 2014-05-10 18:30:51.497095714 -0700 +@@ -251,12 +251,12 @@ void WarningThrottled(uint32 *count, con + #define LOG_ONCE(_s) DO_ONCE(Log _s) + + #ifdef VMX86_DEVEL +- #define DEPRECATED(_fix) DO_ONCE( \ ++ #define VMWARE_DEPRECATED(_fix) DO_ONCE( \ + Warning("%s:%d: %s is DEPRECATED. %s\n", \ + __FILE__, __LINE__, __FUNCTION__, \ + _fix)) + #else +- #define DEPRECATED(_fix) do {} while (0) ++ #define VMWARE_DEPRECATED(_fix) do {} while (0) + #endif + + +diff -urpN work.orig/vmci-only/shared/compat_cred.h work/vmci-only/shared/compat_cred.h +--- work.orig/vmci-only/shared/compat_cred.h 2014-05-10 18:55:27.051287859 -0700 ++++ work/vmci-only/shared/compat_cred.h 2014-05-10 19:20:24.975246986 -0700 +@@ -35,6 +35,7 @@ + #define current_fsgid() (current->fsgid) + #endif + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) + #ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS + #define CURRENT_UID() (__kuid_val(current_uid())) + #define CURRENT_GID() (__kgid_val(current_gid())) +@@ -42,6 +43,10 @@ + #define CURRENT_UID() (current_uid()) + #define CURRENT_GID() (current_gid()) + #endif ++#else ++#define CURRENT_UID() (from_kuid_munged(current_user_ns(), current_uid())) ++#define CURRENT_GID() (from_kgid_munged(current_user_ns(), current_gid())) ++#endif + + #if !defined(cap_set_full) + /* cap_set_full was removed in kernel version 3.0-rc4. */ +diff -urpN work.orig/vsock-only/shared/compat_cred.h work/vsock-only/shared/compat_cred.h +--- work.orig/vsock-only/shared/compat_cred.h 2014-05-10 18:55:27.051287859 -0700 ++++ work/vsock-only/shared/compat_cred.h 2014-05-10 19:19:35.046747235 -0700 +@@ -35,6 +35,7 @@ + #define current_fsgid() (current->fsgid) + #endif + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) + #ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS + #define CURRENT_UID() (__kuid_val(current_uid())) + #define CURRENT_GID() (__kgid_val(current_gid())) +@@ -42,6 +43,10 @@ + #define CURRENT_UID() (current_uid()) + #define CURRENT_GID() (current_gid()) + #endif ++#else ++#define CURRENT_UID() (from_kuid_munged(current_user_ns(), current_uid())) ++#define CURRENT_GID() (from_kgid_munged(current_user_ns(), current_gid())) ++#endif + + #if !defined(cap_set_full) + /* cap_set_full was removed in kernel version 3.0-rc4. */ +diff -urpN work.orig/vmblock-only/linux/control.c work/vmblock-only/linux/control.c +--- work.orig/vmblock-only/linux/control.c 2014-05-11 00:34:14.807305118 -0700 ++++ work/vmblock-only/linux/control.c 2014-05-11 00:44:20.970502062 -0700 +@@ -279,11 +279,23 @@ ExecuteBlockOp(const char __user *buf, + int i; + int retval; + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) + name = (char*) getname(buf)->name; ++#else ++ name = __getname(); ++#endif + if (IS_ERR(name)) { + return PTR_ERR(name); + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) ++ i = strncpy_from_user(name, buf, PATH_MAX); ++ if (i < 0 || i == PATH_MAX) { ++ __putname(name); ++ return -EINVAL; ++ } ++#endif ++ + for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) { + name[i] = '\0'; + } diff --git a/app-emulation/vmware-modules/files/279-inline-correctly.patch b/app-emulation/vmware-modules/files/279-inline-correctly.patch new file mode 100644 index 0000000..6e2dcf7 --- /dev/null +++ b/app-emulation/vmware-modules/files/279-inline-correctly.patch @@ -0,0 +1,12 @@ +diff -urpN work.orig/vmmon-only/linux/driver.c work/vmmon-only/linux/driver.c +--- work.orig/vmmon-only/linux/driver.c 2014-04-14 17:06:21.000000000 -0700 ++++ work/vmmon-only/linux/driver.c 2014-05-10 18:53:59.266171700 -0700 +@@ -1338,7 +1338,7 @@ LinuxDriverReadTSC(void *data, // OUT: + *----------------------------------------------------------------------------- + */ + +-__attribute__((always_inline)) static Bool ++INLINE_SINGLE_CALLER static Bool + LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min + { + TSCDelta tscDelta; diff --git a/app-emulation/vmware-modules/files/279-userns.patch b/app-emulation/vmware-modules/files/279-userns.patch deleted file mode 100644 index c960b78..0000000 --- a/app-emulation/vmware-modules/files/279-userns.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- 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; - diff --git a/app-emulation/vmware-modules/files/279-vmblock-3.11.patch b/app-emulation/vmware-modules/files/279-vmblock-3.11.patch deleted file mode 100644 index fc1f639..0000000 --- a/app-emulation/vmware-modules/files/279-vmblock-3.11.patch +++ /dev/null @@ -1,89 +0,0 @@ ---- 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, - }; diff --git a/app-emulation/vmware-modules/files/279-vmblock-3.12.patch b/app-emulation/vmware-modules/files/279-vmblock-3.12.patch deleted file mode 100644 index 63aabbe..0000000 --- a/app-emulation/vmware-modules/files/279-vmblock-3.12.patch +++ /dev/null @@ -1,69 +0,0 @@ ---- 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 = (char*)getname(buf)->name; - if (IS_ERR(name)) { - return PTR_ERR(name); - } ---- 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) diff --git a/app-emulation/vmware-modules/vmware-modules-279.2-r1.ebuild b/app-emulation/vmware-modules/vmware-modules-279.2-r1.ebuild new file mode 100644 index 0000000..345ecc0 --- /dev/null +++ b/app-emulation/vmware-modules/vmware-modules-279.2-r1.ebuild @@ -0,0 +1,123 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=5 + +inherit eutils flag-o-matic linux-info linux-mod user versionator udev + +PV_MAJOR=$(get_major_version) +PV_MINOR=$(get_version_component_range 2) + +DESCRIPTION="VMware kernel modules" +HOMEPAGE="http://www.vmware.com/" + +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="pax_kernel +vmci +vsock" + +RDEPEND="" +DEPEND="${RDEPEND} + || ( =app-emulation/vmware-player-6.0.${PV_MINOR}* + =app-emulation/vmware-workstation-10.0.${PV_MINOR}* )" + +S=${WORKDIR} + +# no debug-symbol magic (should really be a linux-mod feature) +RESTRICT="strip splitdebug" + +# override setup_allowed_flags from flag-o-matic +# to ultra-conservative set. Interim solution until +# something can be done for this in linux-mod.eclass. +# Note that the kernel has it's own flags that should +# be applied automagically. +# +# How is this still not handled correctly in Gentoo? +# Am I missing something, or is this an insane, +# crazy bug? +setup_allowed_flags() { + ALLOWED_FLAGS="-pipe" + ALLOWED_FLAGS+=" -O -O1 -O2 -Os -mtune*" + ALLOWED_FLAGS+=" -W* -w" + export ALLOWED_FLAGS + return 0 +} + +pkg_setup() { + CONFIG_CHECK="~HIGH_RES_TIMERS" + if kernel_is ge 2 6 37 && kernel_is lt 2 6 39; then + CONFIG_CHECK="${CONFIG_CHECK} BKL" + fi + if use vmci ; then + CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI" + else + CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI" + fi + if use vsock ; then + CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI_VSOCKETS" + else + CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI_VSOCKETS" + fi + + linux-info_pkg_setup + + linux-mod_pkg_setup + + VMWARE_GROUP=${VMWARE_GROUP:-vmware} + + VMWARE_MODULE_LIST_ALL="vmblock vmmon vmnet vmci vsock" + VMWARE_MODULE_LIST="vmblock vmmon vmnet" + use vmci && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vmci" + use vsock && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vsock" + + VMWARE_MOD_DIR="${PN}-${PVR}" + + BUILD_TARGETS="auto-build KERNEL_DIR=${KERNEL_DIR} KBUILD_OUTPUT=${KV_OUT_DIR}" + + enewgroup "${VMWARE_GROUP}" + strip-flags + + for mod in ${VMWARE_MODULE_LIST}; do + MODULE_NAMES="${MODULE_NAMES} ${mod}(misc:${S}/${mod}-only)" + done +} + +src_unpack() { + cd "${S}" + for mod in ${VMWARE_MODULE_LIST_ALL}; do + tar -xf /opt/vmware/lib/vmware/modules/source/${mod}.tar + done +} + +src_prepare() { + epatch "${FILESDIR}/${PV_MAJOR}-makefile-kernel-dir.patch" + epatch "${FILESDIR}/${PV_MAJOR}-makefile-include.patch" + epatch "${FILESDIR}/${PV_MAJOR}-netdevice.patch" + use pax_kernel && epatch "${FILESDIR}/279-hardened.patch" + epatch "${FILESDIR}/${PV_MAJOR}-apic.patch" + epatch "${FILESDIR}/${PV_MAJOR}-inline-correctly.patch" + kernel_is ge 3 7 0 && epatch "${FILESDIR}/${PV_MAJOR}-putname.patch" + kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-vmblock.patch" + kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.11.0.patch" + # 3.12.x and 3.13.x patches + kernel_is ge 3 12 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.12.0.patch" + kernel_is ge 3 14 0 && epatch "${FILESDIR}/${PV_MAJOR}-3.14.0.patch" + + # Allow user patches so they can support RC kernels and whatever else + epatch_user +} + +src_install() { + linux-mod_src_install + local udevrules="${T}/60-vmware.rules" + cat > "${udevrules}" <<-EOF + KERNEL=="vmci", GROUP="vmware", MODE="0660" + KERNEL=="vmw_vmci", GROUP="vmware", MODE="0660" + KERNEL=="vmmon", GROUP="vmware", MODE="0660" + KERNEL=="vsock", GROUP="vmware", MODE="0660" + EOF + udev_dorules "${udevrules}" +} diff --git a/app-emulation/vmware-modules/vmware-modules-279.2.ebuild b/app-emulation/vmware-modules/vmware-modules-279.2.ebuild deleted file mode 100644 index c1270ab..0000000 --- a/app-emulation/vmware-modules/vmware-modules-279.2.ebuild +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright 1999-2014 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-emulation/vmware-modules/vmware-modules-279.2.ebuild,v 1.1 2014/04/19 10:10:25 dilfridge Exp $ - -EAPI=5 - -inherit eutils flag-o-matic linux-info linux-mod user versionator udev - -PV_MAJOR=$(get_major_version) -PV_MINOR=$(get_version_component_range 2) - -DESCRIPTION="VMware kernel modules" -HOMEPAGE="http://www.vmware.com/" - -SRC_URI="" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~amd64 ~x86" -IUSE="pax_kernel +vmci +vsock" - -RDEPEND="" -DEPEND="${RDEPEND} - || ( =app-emulation/vmware-player-6.0.${PV_MINOR}* - =app-emulation/vmware-workstation-10.0.${PV_MINOR}* )" - -S=${WORKDIR} - -pkg_setup() { - CONFIG_CHECK="~HIGH_RES_TIMERS" - if kernel_is ge 2 6 37 && kernel_is lt 2 6 39; then - CONFIG_CHECK="${CONFIG_CHECK} BKL" - fi - if use vmci ; then - CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI" - else - CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI" - fi - if use vsock ; then - CONFIG_CHECK="${CONFIG_CHECK} !VMWARE_VMCI_VSOCKETS" - else - CONFIG_CHECK="${CONFIG_CHECK} VMWARE_VMCI_VSOCKETS" - fi - - linux-info_pkg_setup - - linux-mod_pkg_setup - - VMWARE_GROUP=${VMWARE_GROUP:-vmware} - - VMWARE_MODULE_LIST_ALL="vmblock vmmon vmnet vmci vsock" - VMWARE_MODULE_LIST="vmblock vmmon vmnet" - use vmci && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vmci" - use vsock && VMWARE_MODULE_LIST="${VMWARE_MODULE_LIST} vsock" - - VMWARE_MOD_DIR="${PN}-${PVR}" - - BUILD_TARGETS="auto-build KERNEL_DIR=${KERNEL_DIR} KBUILD_OUTPUT=${KV_OUT_DIR}" - - enewgroup "${VMWARE_GROUP}" - filter-flags -mfpmath=sse - - for mod in ${VMWARE_MODULE_LIST}; do - MODULE_NAMES="${MODULE_NAMES} ${mod}(misc:${S}/${mod}-only)" - done -} - -src_unpack() { - cd "${S}" - for mod in ${VMWARE_MODULE_LIST_ALL}; do - tar -xf /opt/vmware/lib/vmware/modules/source/${mod}.tar - done -} - -src_prepare() { - epatch "${FILESDIR}/${PV_MAJOR}-makefile-kernel-dir.patch" - epatch "${FILESDIR}/${PV_MAJOR}-makefile-include.patch" - epatch "${FILESDIR}/${PV_MAJOR}-netdevice.patch" - use pax_kernel && epatch "${FILESDIR}/279-hardened.patch" - epatch "${FILESDIR}/${PV_MAJOR}-apic.patch" - kernel_is ge 3 7 0 && epatch "${FILESDIR}/${PV_MAJOR}-putname.patch" - kernel_is ge 3 10 0 && epatch "${FILESDIR}/${PV_MAJOR}-vmblock.patch" - kernel_is ge 3 8 0 && epatch "${FILESDIR}/${PV_MAJOR}-userns.patch" - kernel_is ge 3 11 0 && epatch "${FILESDIR}/${PV_MAJOR}-vmblock-3.11.patch" - kernel_is ge 3 12 0 && epatch "${FILESDIR}/${PV_MAJOR}-vmblock-3.12.patch" - - - # Allow user patches so they can support RC kernels and whatever else - epatch_user -} - -src_install() { - linux-mod_src_install - local udevrules="${T}/60-vmware.rules" - cat > "${udevrules}" <<-EOF - KERNEL=="vmci", GROUP="vmware", MODE=660 - KERNEL=="vmw_vmci", GROUP="vmware", MODE=660 - KERNEL=="vmmon", GROUP="vmware", MODE=660 - KERNEL=="vsock", GROUP="vmware", MODE=660 - EOF - udev_dorules "${udevrules}" -} -- cgit v1.2.3-65-gdbad