Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

vmware-modules fix for 3.11, 3.12 kernels

  • Loading branch information...
commit d602a321a1e53379a6e674302b9b77f3df924a28 1 parent b1bea14
@elitak authored
View
0  app-emulation/vmware-modules/Manifest
No changes.
View
89 app-emulation/vmware-modules/files/279-vmblock-3.11.patch
@@ -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,
+ };
View
69 app-emulation/vmware-modules/files/279-vmblock-3.12.patch
@@ -0,0 +1,69 @@
+--- 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)
View
2  app-emulation/vmware-modules/vmware-modules-279.1.ebuild
@@ -66,6 +66,8 @@ src_prepare() {
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 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
Please sign in to comment.
Something went wrong with that request. Please try again.