You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.8 KiB
80 lines
2.8 KiB
9 years ago
|
See https://bugs.gentoo.org/show_bug.cgi?id=559602
|
||
|
Patch by Mike Auty <ikelos@gentoo.org>
|
||
|
|
||
|
diff --git a/vmblock-only/linux/inode.c b/vmblock-only/linux/inode.c
|
||
|
index 4811abd..2cbc1f6 100644
|
||
|
--- a/vmblock-only/linux/inode.c
|
||
|
+++ b/vmblock-only/linux/inode.c
|
||
|
@@ -38,7 +38,9 @@
|
||
|
static struct dentry *InodeOpLookup(struct inode *dir,
|
||
|
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)
|
||
|
+#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);
|
||
|
@@ -207,7 +209,12 @@ static void *
|
||
|
static int
|
||
|
#endif
|
||
|
InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink
|
||
|
- struct nameidata *nd) // OUT: stores result
|
||
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
|
||
|
+ void **cookie
|
||
|
+#else
|
||
|
+ struct nameidata *nd
|
||
|
+#endif
|
||
|
+ ) // OUT: stores result
|
||
|
{
|
||
|
int ret;
|
||
|
VMBlockInodeInfo *iinfo;
|
||
|
diff --git a/vmblock-only/linux/inode.c b/vmblock-only/linux/inode.c
|
||
|
index acb2803..4811abd 100644
|
||
|
--- a/vmblock-only/linux/inode.c
|
||
|
+++ b/vmblock-only/linux/inode.c
|
||
|
@@ -199,7 +199,9 @@ InodeOpReadlink(struct dentry *dentry, // IN : dentry of symlink
|
||
|
*----------------------------------------------------------------------------
|
||
|
*/
|
||
|
|
||
|
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
|
||
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
|
||
|
+static const char *
|
||
|
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
|
||
|
static void *
|
||
|
#else
|
||
|
static int
|
||
|
@@ -222,8 +224,12 @@ InodeOpFollowlink(struct dentry *dentry, // IN : dentry of symlink
|
||
|
goto out;
|
||
|
}
|
||
|
|
||
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
|
||
|
+ return *cookie = (char *)(iinfo->name);
|
||
|
+#else
|
||
|
nd_set_link(nd, iinfo->name);
|
||
|
ret = 0;
|
||
|
+#endif
|
||
|
|
||
|
out:
|
||
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
|
||
|
diff --git a/vmnet-only/vmnetInt.h b/vmnet-only/vmnetInt.h
|
||
|
index 23b5d19..d129f7b 100644
|
||
|
--- a/vmnet-only/vmnetInt.h
|
||
|
+++ b/vmnet-only/vmnetInt.h
|
||
|
@@ -78,8 +78,13 @@
|
||
|
|
||
|
extern struct proto vmnet_proto;
|
||
|
#ifdef VMW_NETDEV_HAS_NET
|
||
|
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
|
||
|
# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
|
||
|
- PF_NETLINK, _pri, &vmnet_proto)
|
||
|
+ PF_NETLINK, _pri, &vmnet_proto, 1)
|
||
|
+# else
|
||
|
+# 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
|